Spring integration amqp:出站网关引发ReplyRequiredException 我使用intamqp:outboundgateway在Rabbit中创建消息。消息已发布,但我的流因ReplyRequiredException而停止 setPublisherReturns和SetPublisherConfig是在CachingConnectionFactory上设置的 当我将requires reply设置为“false”时,线程将被冻结并且不会继续

Spring integration amqp:出站网关引发ReplyRequiredException 我使用intamqp:outboundgateway在Rabbit中创建消息。消息已发布,但我的流因ReplyRequiredException而停止 setPublisherReturns和SetPublisherConfig是在CachingConnectionFactory上设置的 当我将requires reply设置为“false”时,线程将被冻结并且不会继续,spring-integration,Spring Integration,代码: 连接工厂 豆子: 公共连接工厂连接工厂(){ 连接工厂连接工厂= 新CACHING连接工厂(主机); connectionFactory.setVirtualHost(virtualhost); connectionFactory.setPort(端口); connectionFactory.setUsername(用户名); connectionFactory.setPassword(密码); connectionFactory.setPublisherReturns(true);

代码:


连接工厂
豆子:
公共连接工厂连接工厂(){
连接工厂连接工厂=
新CACHING连接工厂(主机);
connectionFactory.setVirtualHost(virtualhost);
connectionFactory.setPort(端口);
connectionFactory.setUsername(用户名);
connectionFactory.setPassword(密码);
connectionFactory.setPublisherReturns(true);
connectionFactory.SetPublisherConfigrms(true);
返回(连接工厂)连接工厂;
}

一个
出站网关
用于
请求/回复
场景。当您将某个内容发送到外部系统并等待来自该系统的答复时


如果你的逻辑是单向的,只是发送和忘记,考虑使用<代码> <代码> .< /p>我不能使用,因为我的要求是确保在调用下一步之前已经发送了消息,所以为什么我没有从AMQP:Outway Gateway?????另一方面,听者必须将回复发送给您。在

send和receive
的情况下,请求消息中有
ReplyTo
标题。发送方已开始作为该回复队列的侦听器。这就是它等待回复的方式。但若您的逻辑不是发送回复,而是将其放入代理上的队列中,那个么除非使用
出站通道适配器
,否则您别无选择。好的,您可以在那里配置确认确认通道,以确保消息正确地放置到队列中,并以良好的结果继续。
<rabbit:template id="amqpTemplateCore"  connection-factory="connectionFactoryCore"  />
<bean id="connectionFactoryCore" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject"><ref bean="rabbitConfiguration" /></property>
        <property name="targetMethod"><value>connectionFactory</value></property>
    </bean>

<int-amqp:outbound-gateway
        request-channel="requestIn"
        reply-channel="requestOut"
        amqp-template="amqpTemplateCore" 
        exchange-name="CDS"
        routing-key="keyA">
</int-amqp:outbound-gateway>

bean:
public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory =
            new CachingConnectionFactory(host);
        connectionFactory.setVirtualHost(virtualhost);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setPublisherReturns(true);
        connectionFactory.setPublisherConfirms(true);
        return (ConnectionFactory)connectionFactory;
    }