有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将RabbitMQ与Spring集成请就如何实现故障场景提供建议

1)下面是使用Spring配置rabbitMQ的代码

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/rabbit
                        http://www.springframework.org/schema/rabbit/spring-rabbit-1.5.xsd
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-4.1.xsd           
                        http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

    <context:component-scan base-package="com.messaging.impl" />

    <rabbit:connection-factory id="connectionFactory"
            host="${rabbitmq.host}" port="${rabbitmq.port}"
            username="${rabbitmq.username}" password="${rabbitmq.password}"
            channel-cache-size="${rabbitmq.ChannelCacheSize}"
            requested-heartbeat="${rabbitmq.requestedHeartBeat}" />

    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
        exchange="${request.exchange}" queue="${request.out.queue}" />

    <rabbit:admin id="rabbitAdmin" connection-factory="connectionFactory" />

    <rabbit:queue name="${request.out.queue}"
            declared-by="rabbitAdmin" />

    <rabbit:listener-container
        connection-factory="connectionFactory">
        <rabbit:listener queues="${request.out.queue}"
                ref="messageSender" />
    </rabbit:listener-container>

    <bean id="messageSender"
          class="com.messaging.impl.MessageSenderImpl" />

    <rabbit:topic-exchange name="${request.exchange}"
            declared-by="rabbitAdmin">
        <rabbit:bindings>
            <rabbit:binding queue="${request.out.queue}"
                    pattern="routingkey.*" />
        </rabbit:bindings>
    </rabbit:topic-exchange>


</beans>

2)下面是Java sender类的代码

    @Service
    public class MessageSenderImpl implements MessageSender  {
        @Autowired
        private AmqpTemplate amqpTemplate;

        public void sendMessage(String message){

            amqpTemplate.convertAndSend(message);
            System.out.println("message is" +message);
        }
    }

3)聚甲醛。xml具有以下依赖关系

    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-amqp</artifactId>
        <version>1.5.3.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
        <version>1.5.3.RELEASE</version>
    </dependency>

我没有找到一个完整的例子,可以用于此要求。在检查了各种网站并选择了此设置所需的网站后,我提出了此配置。请告知

注意:-我已经实现了向exchange发布和从队列读取。但是,我需要关于如何实施故障场景的建议。请告知


共 (2) 个答案

  1. # 1 楼答案

    这是最简单的成功方案,我建议你按照这里看到的方法来做。首先,确保连接到正确的服务器,然后向流中添加更多内容。我猜你错过了vhost无论如何,看看下面。(你还忘了提到你面临的问题)

    <int-amqp:inbound-channel-adapter channel="fromRabbit" queue-names="${rabbitmq.sourcequeue}" connection-factory="connectionFactory" concurrent-consumers="5" />
    <int:channel id="fromRabbit">
            <int:interceptors>
                <int:wire-tap channel="consoleOut" />
            </int:interceptors>
    </int:channel>
    <int-stream:stdout-channel-adapter id="consoleOut"  append-newline="true" />
    <!  Infrastructure  >
    <rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"  port="${rabbitmq.port}" username="${rabbitmq.username}" password="${rabbitmq.password}" virtual-host="${rabbitmq.vhost}" />
    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" />
    <rabbit:admin connection-factory="connectionFactory" />
    <rabbit:queue name="${rabbitmq.sourcequeue}" />
    <rabbit:direct-exchange name="${rabbitmq.exchangeaname}">
      <rabbit:bindings>
       <rabbit:binding queue="${rabbitmq.sourcequeue}" key="${rabbitmq.keyname}" />
      </rabbit:bindings>
    </rabbit:direct-exchange>
    
  2. # 2 楼答案

    你能把整个stacktrace贴出来吗?如果你使用老式的

    <bean id="amqpTemplate" class="org.springframework.amqp.core.AmqpTemplate" >
    </bean