调试 Nservicebus 消息发送问题 - 消息消失
我的网络应用程序向队列发送消息很好,没有错误,没有异常,没有投诉。 Log4Net 日志显示
Sending message Test.Nservicebus.Messages.v1.LoggMessage, Test.NServiceBus,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null with ID
456f0b8d-341d-4f92-b3ac-12872c710a6a\4121 to destination V1_LoggQueue..............
看起来不错!
但是当我查看管理控制台时,我在队列中没有看到任何消息! (没有适当的队列处理程序)。
我正在发布到本地私人队列。
是否应该定义一个“传出队列”?或者只有当我发布到远程队列时才会出现这种情况?我的传出队列列表为空。
那么我该如何调试呢?有什么想法从哪里开始吗?
我的 nServicebus init 就像
Bus = NServiceBus.Configure
.WithWeb()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
然后我只使用 Bus.Send(MyMessage); 发送消息。
想法?
My web-application sends messages fine to the queue, no errors, no exceptions, no complaints. The Log4Net log says
Sending message Test.Nservicebus.Messages.v1.LoggMessage, Test.NServiceBus,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null with ID
456f0b8d-341d-4f92-b3ac-12872c710a6a\4121 to destination V1_LoggQueue..............
Looks fine!
But when I look in the management console I see no messages in the Queue! (There is no queue handler in place).
I am posting to a local private queue.
Should there be defined an "outgoing queue"? or is that only when I am posting to a remote queue? My list of outgoing queues is empty.
So how can I debug this? Any ideas where to start?
My nServicebus init is like
Bus = NServiceBus.Configure
.WithWeb()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
Then I just use Bus.Send(MyMessage);
to send the message.
ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果 Web 端点和服务器端点位于不同的计算机上,您应该在 Web 计算机上看到出站队列。您可能会在那里看到消息。这意味着由于某种原因 MSMQ 无法完成向另一台计算机的发送。这通常意味着任一计算机上存在与 MSMQ、MSDTC 相关的配置问题,或者防火墙可能会阻止它。
如果都是本地的,那就有点难说了,因为您在出站队列中看不到任何内容。我会在目标队列上打开日志记录,以查看消息是否确实到达那里,如果是,则说明正在处理该消息。如果不是那么一定是配置问题。
If the web endpoint and the server endpoint are on different machines you should see an outbound queue on the web machine. You may see the messages there. This means that for some reason MSMQ couldn't complete the send to the other machine. This typically means that there is a configuration issue on either machine related to MSMQ, MSDTC, or a firewall could be blocking it.
If it is all local its a bit harder to say since you won't see anything in the outbound queue. I would turn on journaling on the target queue to see if the message actually makes it there, if it does, then something is processing the message. If not then it must be a config problem.