Spring boot SpringRabbitMQ发布和确认

Spring boot SpringRabbitMQ发布和确认,spring-boot,spring-rabbit,Spring Boot,Spring Rabbit,在我的项目中,我有3个类:App(Publisher),PojoListener(Receiver),Config(绑定App和PojoListner)。但是我需要将PojoListener从我的项目中分离出来,并部署到其他地方,以便我的侦听器类将继续侦听rabbitmq,并将消息确认回队列,然后再确认到App类以获取App类发布的任何消息 因为我的配置文件对于发布者和接收者都是通用的。有没有办法把他们分开。我需要在不同的服务器上部署接收器,在不同的服务器上部署发布服务器。两者都将侦听公共队列

在我的项目中,我有3个类:App(Publisher),PojoListener(Receiver),Config(绑定App和PojoListner)。但是我需要将PojoListener从我的项目中分离出来,并部署到其他地方,以便我的侦听器类将继续侦听rabbitmq,并将消息确认回队列,然后再确认到App类以获取App类发布的任何消息

因为我的配置文件对于发布者和接收者都是通用的。有没有办法把他们分开。我需要在不同的服务器上部署接收器,在不同的服务器上部署发布服务器。两者都将侦听公共队列

**App.java** :
public class App {

    public static void main(String[] args) throws UnsupportedEncodingException {        
        ApplicationContext context = new AnnotationConfigApplicationContext(RabbitMQConfig.class);
        RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
        String response = (String) rabbitTemplate.convertSendAndReceive("message from publisher");
        System.out.println("message sent");
        System.out.println("response from :" + response);
    }
}
PojoListener.java:

public class PojoListener {

    public String handleMessage(String msg) {
        System.out.println("IN POJO RECEIVER!!!");
        return msg.toUpperCase();
    }
}
RabbitMQConfig.java

@Configuration

public class RabbitMQConfig {

@Bean

public ConnectionFactory rabbitConnectionFactory() {

    CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
    connectionFactory.setHost("localhost");
    connectionFactory.setUsername("guest");
    connectionFactory.setPassword("guest");
    return connectionFactory;
}  


@Bean

public RabbitTemplate fixedReplyQRabbitTemplate() {

    RabbitTemplate template = new RabbitTemplate(rabbitConnectionFactory());
    template.setExchange(ex().getName());
    template.setRoutingKey("test");
    template.setReplyQueue(replyQueue());
    template.setReplyTimeout(60000);
    return template;
}


@Bean

public SimpleMessageListenerContainer replyListenerContainer() {

    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(rabbitConnectionFactory());
    container.setQueues(replyQueue());
    container.setMessageListener(fixedReplyQRabbitTemplate());
    return container;
}



@Bean

public SimpleMessageListenerContainer serviceListenerContainer() {

    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(rabbitConnectionFactory());
    container.setQueues(requestQueue());
    container.setMessageListener(new MessageListenerAdapter(new PojoListener()));
    return container;
}


@Bean

public DirectExchange ex() {

    return new DirectExchange("rabbit-exchange", false, true);
}

@Bean

public Binding binding() {

    return BindingBuilder.bind(requestQueue()).to(ex()).with("test");
}


@Bean

public Queue requestQueue() {

    return new Queue("request-queue-spring");
}


@Bean

public Queue replyQueue() {

    return new Queue("response-queue-spring");
}

@Bean

public RabbitAdmin admin() {

   return new RabbitAdmin(rabbitConnectionFactory());
}
}

现在还不清楚你的意思是什么-你可以简单地将配置文件分成3个文件-普通的、生产者的和消费者相关的bean。你有任何示例项目来演示吗。这将非常有帮助。不清楚您的意思-您可以简单地将配置拆分为3个文件-公共、生产者和消费者相关的bean。您有任何示例项目用于演示吗。这将非常有帮助。