我用的配置文件是yml形式,生产者那边配置没问题,可以正常连接服务器并发送消息。
消费者这边一样的,并且可以正常启动SpringBootApplication,但是在控制台中rabbitConnectionFactory已经注册了,之后却没有连接服务器的操作,同时控制台输出也为空,没有进入Receiver类。以下是控制台输出,Receiver类和yml配置文件,请问一下是哪里没有配置正确。
application.yml
#rabbitmq基础配置
spring:
rabbitmq:
addresses: 127.0.0.1:5672
username: guest
password: guest
virtual-host: /
connection-timeout: 15000
#rabbitmq消费者配置
listener:
simple:
concurrency: 5
max-concurrency: 10
acknowledge-mode: manual
prefetch: 1
http:
encoding: UTF-8
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null
server:
servlet:
context-path: /
port: 8002@Component
public class OrderReceiver {
//Rabbit以注解的形式进行监听
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(value = "order-queue", durable = "true"),
exchange = @Exchange(value = "order-exchange" , type = "topic"),
key = "order.#"
)
)
@RabbitHandler
public void onOrderMsg(@Payload Order order , @Headers Map headers, Channel channel) throws IOException {
//消费者操作
System.err.println("消费者活动");
System.out.println("订单ID: " + order.getId());
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
//手工模式,响应ACK
channel.basicAck(deliveryTag, false);
}