我在我的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);
}
}
}