只有当接收者在发送者之前运行时,我才能收到消息。 但我需要能够在接收器未运行时发送消息。 并在接收器启动时获取它。 有可能吗?
c#示例:
//Send
Channel.ExchangeDeclare(ExchangeName,"direct");
Channel.BasicPublish(ExchangeName, "MyRoute", null, body);
//Receive (other app)
Channel.ExchangeDeclare(ExchangeName,"direct");
String queueName = Channel.QueueDeclare().QueueName;
Channel.QueueBind(queueName, ExchangeName, "MyRoute");
QueueingBasicConsumer consumer = new QueueingBasicConsumer(Channel);
Channel.BasicConsume(queueName, false, consumer);
BasicDeliverEventArgs Message=consumer.Queue.DequeueNoWait(null);
答案 0 :(得分:0)
您正在创建自动删除队列:
String queueName = Channel.QueueDeclare().QueueName;
因此,当您关闭使用者时,会自动删除队列。
如果你想这样做,你必须创建一个持久的队列,而不是将队列绑定到Exchange,如下所示:
channel.queueDeclare("yourQueue", true, false, false, null);
通过这种方式,您无需启动和运行消费者。如果消费者关闭,消息将被存储到队列中。