Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MassTransit/RabbitMQ发送与发布和故障<&燃气轮机;问题_Rabbitmq_Masstransit - Fatal编程技术网

MassTransit/RabbitMQ发送与发布和故障<&燃气轮机;问题

MassTransit/RabbitMQ发送与发布和故障<&燃气轮机;问题,rabbitmq,masstransit,Rabbitmq,Masstransit,我有两个应用程序,分别是appA和appB。它们分别有一个aQueue和bQueue,这两个应用程序都有一个ReceiveEndpoint。两个应用程序在RabbitMQ上使用相同的主机 appA正在使用bus.Send方法将命令CreateEntityCommand发送到appB,并将其发送到bQueue 在appB中,我有一个消费者,消费CreateEntityCommand **到目前为止还不错** 问题#1: 如果我的appB使用者成功创建实体,我将发布EntityCreateEvent

我有两个应用程序,分别是appA和appB。它们分别有一个aQueue和bQueue,这两个应用程序都有一个ReceiveEndpoint。两个应用程序在RabbitMQ上使用相同的主机

appA正在使用bus.Send方法将命令CreateEntityCommand发送到appB,并将其发送到bQueue

在appB中,我有一个消费者,消费CreateEntityCommand

**到目前为止还不错**

问题#1: 如果我的appB使用者成功创建实体,我将发布EntityCreateEvent。我在appA中的EntityCreatedEvent消费者做对了,但该事件也被添加到bQueue_中,为什么

问题#2:
现在,如果我的appB消费者出现异常,则必须通知我的appA。在bQueue中生成故障。我想让我的appA消耗故障,但故障会自动出现在bQueue上。如果我在appA中将ReceiveEndpoint添加到列出的bQueue,我会得到很多死信(跳过队列)。

根据经验,如果您的消息到达死信(跳过)队列,这意味着消息类型交换和队列交换之间存在绑定,但您的端点对于给定的消息类型没有使用者

通常情况下,当您以前有一个消费者,然后将其删除时,就会发生这种情况。MassTransit不会为您删除绑定,但它也不知道如何处理不断出现的消息

通过转到RMQ管理UI执行以下操作,可以删除过时的绑定:

  • 打开端点队列
  • 单击绑定,其中只有一个绑定指向端点交换
  • 按照链接打开端点交换并查看到消息类型交换的绑定
  • 在那里,您可以删除不再需要的绑定

如果队列中没有消息,您也可以将其删除,MassTransit将从头开始为您创建所有信息。

如果没有总线配置代码,就无法判断出问题所在。您的第一个问题的答案是-您之前在appB中也有此事件的消费者,绑定仍然存在。您需要手动删除绑定或删除appB队列。它将删除该队列的所有绑定,当您启动应用程序时,MT将正确地重新创建这些绑定。如何删除该绑定?我试图删除所有队列,但没有用。Alexey,你说得对。交易所里仍然有约束力。我清除一切,启动应用程序,现在一切都像一个魔咒!谢谢。我应该已经添加了答案,现在已经完成了。很抱歉通过这种方式与您联系(我的评论与您的输入无关)。我遇到了一个你在“分类”中投票的问题,你做了错误的选择。请:仔细研究分类帮助,避免将不属于那里的项目放入编辑队列。我希望你们能把这看作是一个提高投票率的机会。我具体是说。如果您有进一步的问题或反馈,请随时给我留言。如果你给我一个简短的提示,我会很快删除这个评论。