我在我的网络应用程序(Asp.net-MVC 4.0)中使用 rabbit-Mq。我的要求是向特定用户发送消息。假设如果 user1 在线并且他通过 rabbit-Mq 向 user2 发送消息。它应该只由“user2”接收。我使用的代码是将消息存储在队列中的模板,每当用户单击接收时,他都会收到该消息,但在我的情况下对特定用户没有限制。任何人都可以收到错误的信息,我必须处理它。请帮助我解决这个问题。
我们在 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);
}
}
}