我想用RabbitMq创建一个队列,我将在一侧发送一些消息并在另一个应用程序中接收。我正在使用以下代码:
function Codes() {
var DeInf = "No Public Developer Info yet.";
var Error = "By the time you've read this the page has closed itself already";
var idx = '<a href="index.html">Get to the Index!</a>';
var Errore = "No recognised Code!";
var B2 = document.getElementById("CodeInput").value;
var A1 = B2.toLowerCase().trim();
var info = document.getElementById("info");
switch (A1) {
case 'devinfo':
// Fall-through intended
case 'developerinfo':
info.textContent = DeInf;
break;
case 'error':
info.textContent = Error;
close();
break;
case 'newtons pendulum':
// Fall-through intended
case 'newton':
// Fall-through intended
case 'pendulum':
info.textContent = Newton;
break;
case 'binary':
info.innerHTML = "11111100001";
break;
case 'index':
info.innerHTML = idx;
break;
case 'randomnumber':
info = Math.floor((Math.random() * 1000) + 1);
break;
default:
info.textContent = Errore;
break;
}
}
MessageUrn uri和ReceiveFrom应该具有相同的uri,否则为ReceiveFrom方法指定的uri将确定总线端点。但这意味着我的发布者也是同一队列的消费者。当没有接收者时,所有消息都转到queuename_error队列。当有接收器时,一切似乎都没问题。
我做错了什么?我理解为什么消息会转到错误队列 - 因为发布者没有订阅它们,但同时他也是消费者 出现错误情况。当(重新)启动接收器时,是否可以从错误队列中恢复消息?
masstransit是2.10.0.0。
提前致谢。
答案 0 :(得分:2)
.ReceiveFrom()
地址对于每个服务应该是唯一的,并且仅在服务具有相同的消费者且消费相同的消息类型时才共享。使用相同RabbitMQ服务器的服务之间唯一的共同点是主机(和虚拟主机,如果使用的话)。否则,他们必须是不同的。
是的,他们会进入错误队列,因为发布者没有订阅它们。为您的发布者提供不同的队列名称,问题就解决了。