是否可以将RabbitMessagingTemplate用作AmqpOutboundEndpoint?

时间:2015-04-23 16:06:42

标签: spring-integration spring-amqp

我对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标头。

1 个答案:

答案 0 :(得分:1)

不清楚你的意思; RabbitMessagingTemplate执行与AmqpOutboundEndpoint类似的功能 - 将o.s.messaging.Message转换为RabbitMQ消息。

两者都使用了RabbitTemplate

RabbitMessagingTemplate适用于使用spring-messaging但未使用Spring Integration的人。

如果你能准确解释你的问题,我们可以提供进一步的帮助。