当前位置: 首页 > 知识库问答 >
问题:

Spring集成-将消息头复制到JMS消息

咸疏珂
2023-03-14

在Spring集成中使用出站网关时,我试图在JMS标头中发送回复Q详细信息。我了解到JIRA#INT-97中的增强功能在将Spring消息标头发送到JMS目标之前将其复制到JMS标头。

在将消息发送到出站网关之前,将消息头设置如下。message.getHeader(). setAtcm(JmsTargetAdapter.JMS_REPLY_TO, myReplyDestation);

但是我无法在任何SI jar中找到JmsTargetAdapter类。

有谁能帮我弄一个有这个类的罐子吗?

还有,我下面的理解正确吗?

  1. 使用JMSReplyTo属性丰富消息头,该属性具有MQQueue对象(我正在向MQ发送消息)
  2. 使用出站网关发布消息(默认情况下,JMS头将附加SI头)

编辑:

我有源和目标系统,其中源向MQ代理发送请求,例如:MQBroker 1和目标向MQBroker 2发送回复。两个代理都通过中间件层互连。

我需要在请求头中传递回复Q和Q管理器详细信息,以便目的地放回回复。但是回复Q详细信息驻留在代理2中,而出站网关配置将具有代理1配置。

如何使用出站网关实现这一点?这可能吗?

共有1个答案

高宏峻
2023-03-14

这是一个非常非常旧的框架预发布中的一个非常旧的问题。

请参阅有关如何使用出站网关的当前文档。

您不需要以这种方式设置标头;在网关上配置回复目的地*属性之一。

编辑

针对您的评论:

网关无法与两个不同的代理进行对话。为此,您必须使用出站和入站通道适配器,并进行自己的回复关联。

要做到这一点,您可以使用头丰富器将jms\u replyTo设置为头。。。

<int:header-enricher>
    <int:header name="jms_replyTo" ref="someReplyDestination" />
    <int:header name="jms_correlationId" expression="headers['id'].toString()" />
</int:header-enricher>

…其中,someReplyDestinaion是一个

回复中的JMSCorrelationID将位于标题jms\u correlationId中。

只要服务器回显相同的相关id,您就可以将回复与请求相匹配;在您自己的代码中,或使用聚合器。

 类似资料:
  • 简单的消息发布器如下所示: ...其配置如下: 问题是,此发布服务器将消息发送到准备好的默认目标,但我需要将消息发送到不同的队列。在我的情况下,我的应用程序中的每个任务都需要一个消息队列。原因是,如果要中止任务,必须从代理中删除消息。如果一个任务有数千条消息,那么使用选择器接收所有消息不是一个好的做法。我需要从消息代理中删除中止任务的所有消息,而不接收客户端。JMS仅支持消息的发送和接收。我必须使

  • 我使用以下代码消费来自JMS ActiveMQ的消息: 我的要求是从这里消费并将其发布到Kafka出站适配器。使用以下配置: 以下是我想实现的目标: > 我注意到我的消息会立即出队,如果处理遇到一些异常,我无法重新处理它。我不希望这种情况发生。 我真的很难让它发挥作用。有人能帮帮我吗?

  • 我设置了一个EJB项目,使用JMS将持久性实体对象发送到MDB。我使用JBoss EAP 7,使用Apache ActiveMQ作为消息传递提供程序。我像这样设置ConnectionFactory和队列: 这是我的消息生成器,它接收“Account”实体对象作为参数并将其发送到队列: EntityEnqueueBean。Java语言 MDB从队列接收消息并对其进行处理: java账户 不确定我做错

  • 我正在使用Spring4.3.5.Release和ActiveMQ5.14.3来处理消息队列。 下面是我的单元测试: 这个测试工作得很好,并且消息会正确地进入队列! 因为单元测试是事务性的,所以我希望当测试结束时,消息会从队列中回滚,但似乎并非如此。 我知道这是一个“集成”测试,因为它实际上是接触ActiveMQ服务器并将消息放入队列。 那么,我如何使这真正事务性,使我刚刚放在队列上的消息真的在它

  • 我有一个集成应用程序,大部分工作,但注意到昨天一个消息丢失了。当时,service-activatorendpoint正忙于处理先前的消息。 以下是适用于该问题的配置。

  • 我们有一个运行在JBoss4上的内部系统,我们希望升级到Wildfly21,因为我们不能永远停留在过去。 我们有两个站点,一个位于东海岸的活动站点,另一个位于西海岸的热备份/故障转移站点,每个站点在集群中都有两个独立的jboss服务器。我们正在使用嵌入式消息传递,目前由mysql支持mysql复制,以保持备份站点的同步,以防我们需要故障转移。 所以-当我们故障转移到其他站点时,我们如何尽最大努力保