我对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
标头的值复制到等效的amqp标头。
答案 0 :(得分:1)
不清楚你的意思; RabbitMessagingTemplate
执行与AmqpOutboundEndpoint
类似的功能 - 将o.s.messaging.Message
转换为RabbitMQ消息。
两者都使用了RabbitTemplate
。
RabbitMessagingTemplate
适用于使用spring-messaging但未使用Spring Integration的人。
如果你能准确解释你的问题,我们可以提供进一步的帮助。