是否可以使用 RabbitMessagingTemplate 作为 AmqpOutboundEndpoint?
Is it possible to use a RabbitMessagingTemplate as AmqpOutboundEndpoint?
我是 spring-integration
的新手。我正在尝试集成一个 IntegrationFlow
端点是一个 AmqpOutboundEndpoint
:
return IntegrationFlows.from("ordersChannel")
.handle(Amqp.outboundAdapter(rabbitTemplate)
.exchangeName(exchangeName)
.routingKey(routingKey))
.get();
我的 MessageGateway
使用我想要的有效负载创建类型 org.springframework.messaging.support.GenericMessage
的实例:
@MessagingGateway
public interface OrderDispatchService {
@Gateway(requestChannel = "ordersChannel")
void sendOrder(final Order order);
}
我确实希望 outboundEndpoint 像 RabbitMessagingTemplate
一样创建 amqp 消息。 org.springframework.messaging.support.GenericMessage
看起来是 amqp 消息。
但是 AmqpOutboundEndpoint
只是将 AmqpTemplate
作为参数。我怎样才能做到这一点?任何转换原始消息的尝试都会失败,因为端点只是简单地解包消息并获取原始有效负载。也许我偏离了轨道?
更新:
我现在做了以下事情:
.enrichHeaders(s -> s.headerExpressions(h -> h
.put(AmqpHeaders.MESSAGE_ID, "headers.id.toString()")
.put(AmqpHeaders.TIMESTAMP, "new java.util.Date(headers.timestamp)")))
这会将原始 org.springframework.messaging.support.GenericMessage
headers 的值复制到等效的 amqp headers。
不清楚你的意思; RabbitMessagingTemplate
执行与 AmqpOutboundEndpoint
类似的功能 - 将 o.s.messaging.Message
转换为 RabbitMQ 消息。
两者都在幕后使用 RabbitTemplate
。
RabbitMessagingTemplate
适用于使用 spring 消息但不使用 Spring 集成的人。
如果你能准确解释你的问题是什么,我们可以提供进一步的帮助。
我是 spring-integration
的新手。我正在尝试集成一个 IntegrationFlow
端点是一个 AmqpOutboundEndpoint
:
return IntegrationFlows.from("ordersChannel")
.handle(Amqp.outboundAdapter(rabbitTemplate)
.exchangeName(exchangeName)
.routingKey(routingKey))
.get();
我的 MessageGateway
使用我想要的有效负载创建类型 org.springframework.messaging.support.GenericMessage
的实例:
@MessagingGateway
public interface OrderDispatchService {
@Gateway(requestChannel = "ordersChannel")
void sendOrder(final Order order);
}
我确实希望 outboundEndpoint 像 RabbitMessagingTemplate
一样创建 amqp 消息。 org.springframework.messaging.support.GenericMessage
看起来是 amqp 消息。
但是 AmqpOutboundEndpoint
只是将 AmqpTemplate
作为参数。我怎样才能做到这一点?任何转换原始消息的尝试都会失败,因为端点只是简单地解包消息并获取原始有效负载。也许我偏离了轨道?
更新:
我现在做了以下事情:
.enrichHeaders(s -> s.headerExpressions(h -> h
.put(AmqpHeaders.MESSAGE_ID, "headers.id.toString()")
.put(AmqpHeaders.TIMESTAMP, "new java.util.Date(headers.timestamp)")))
这会将原始 org.springframework.messaging.support.GenericMessage
headers 的值复制到等效的 amqp headers。
不清楚你的意思; RabbitMessagingTemplate
执行与 AmqpOutboundEndpoint
类似的功能 - 将 o.s.messaging.Message
转换为 RabbitMQ 消息。
两者都在幕后使用 RabbitTemplate
。
RabbitMessagingTemplate
适用于使用 spring 消息但不使用 Spring 集成的人。
如果你能准确解释你的问题是什么,我们可以提供进一步的帮助。