发送到队列的名称与地址名称不匹配的消息在哪里?
Where are the messages sent to the queue with a name that does not match the address name?
我创建了一个名称与地址名称不匹配的队列
然后我向队列发送一条名为 QUEUE
的消息
代码完成且没有错误,但是消息没有出现在名为 QUEUE 的队列中,也没有出现在 DLQ 中,Artemis 日志中也没有错误。消息去了哪里?
apache-artemis v. 2.11.0,创建代理后的默认配置
同样是第二个问题,是否可以直接向这样的队列发送消息,队列的名称与地址的名称不同?
这是 ActiveMQ Artemis 使用的基本寻址模型 - 将消息发送到 地址 ,从 队列 中使用它们。消息如何从地址路由到队列取决于配置的路由类型。您可以在 address model documentation.
中阅读所有相关信息
如果您将邮件发送到一个不存在的地址,那么它不会被路由到任何地方。换句话说,它只会被丢弃。如果你想在死信资源中捕获这些类型的消息,那么你可以设置:
<address-settings>
<address-setting match="#">
<dead-letter-address>DLA</dead-letter-address>
<send-to-dla-on-no-route>true</send-to-dla-on-no-route>
</address-setting>
</address-settings>
<addresses>
<address name="DLA">
<anycast>
<queue name="DLQ" />
</anycast>
</address>
</addresses>
这在 the documentation 中讨论。
如果出于某种原因您想将消息直接发送到队列,那么您可以使用遵循模式 <address>::<queue>
.所以在你的情况下你会使用:
final Destination dest = session.createQueue("ADD::QUEUE");
这也在 the documentation 中讨论。
阅读 the documentation about how JMS concepts are mapped onto the core API。
您可能也会从中受益
我创建了一个名称与地址名称不匹配的队列
然后我向队列发送一条名为 QUEUE
的消息代码完成且没有错误,但是消息没有出现在名为 QUEUE 的队列中,也没有出现在 DLQ 中,Artemis 日志中也没有错误。消息去了哪里?
apache-artemis v. 2.11.0,创建代理后的默认配置
同样是第二个问题,是否可以直接向这样的队列发送消息,队列的名称与地址的名称不同?
这是 ActiveMQ Artemis 使用的基本寻址模型 - 将消息发送到 地址 ,从 队列 中使用它们。消息如何从地址路由到队列取决于配置的路由类型。您可以在 address model documentation.
中阅读所有相关信息如果您将邮件发送到一个不存在的地址,那么它不会被路由到任何地方。换句话说,它只会被丢弃。如果你想在死信资源中捕获这些类型的消息,那么你可以设置:
<address-settings>
<address-setting match="#">
<dead-letter-address>DLA</dead-letter-address>
<send-to-dla-on-no-route>true</send-to-dla-on-no-route>
</address-setting>
</address-settings>
<addresses>
<address name="DLA">
<anycast>
<queue name="DLQ" />
</anycast>
</address>
</addresses>
这在 the documentation 中讨论。
如果出于某种原因您想将消息直接发送到队列,那么您可以使用遵循模式 <address>::<queue>
.所以在你的情况下你会使用:
final Destination dest = session.createQueue("ADD::QUEUE");
这也在 the documentation 中讨论。
阅读 the documentation about how JMS concepts are mapped onto the core API。
您可能也会从中受益