我在我的web應用程序(Asp.net-MVC 4.0)中使用rabbit-mq。我的要求是發送消息給特定的用戶。假設如果user1在線並且他通過rabbit-Mq向user2發送消息。它應該只被「user2」接收。我使用的代碼是一個將消息存儲在隊列中的模板,每當用戶點擊接收時,他都會得到這個消息,但在我的情況下沒有特定用戶的限制。任何人都可以得到那個錯誤的信息,我必須處理。請幫助我解決這個問題。發送郵件由rabbitMq
我們在rabbit-Mq中有什麼東西可以區分正確的消息和正確的用戶/消費者嗎?我們可以設置一個帶有消息的密鑰並在接收時檢查密鑰嗎? 這可能嗎?
下面我寫我使用的發送和接收消息
public ActionResult SendMessage(MessagingModel ObjModel)
{ var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
Message = ObjModel.Message;
channel.QueueDeclare("MessageQueue", true, false, false, null);
var body = Encoding.UTF8.GetBytes(ObjModel.Message);
channel.BasicPublish("", "MessageQueue", null, body);
}
}
}
public JsonResult RecieveMessage()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("MessageQueue", true, false, false, null);
bool noAck = true;
BasicGetResult result = channel.BasicGet("MessageQueue", noAck);
if (result == null)
{
Message = "No Messages Found.";
}
else
{
IBasicProperties props = result.BasicProperties;
byte[] Body = result.Body;
Message = Encoding.Default.GetString(Body);
}
}
}