spring boot整合rabbitmq
消费者
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
配置文件
spring.rabbitmq.addresses=192.168.223.144:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=3s
spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.simple.max-concurrency=10
spring.rabbitmq.listener.simple.concurrency=5
spring.rabbitmq.listener.simple.prefetch=1
消息类
@Data @AllArgsConstructor @NoArgsConstructor public class Order implements Serializable { private String orderId; private String name; private String message; }
接收消息者
@Slf4j @Component public class OrderReceiver { @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "order-queue", durable = "true"), exchange = @Exchange(name = "order-exchange", type = "topic"), key = "order.*" )) @RabbitHandler public void onOrderMessage(@Payload Order order, @Headers Map<String, Object> headers, Channel channel) throws IOException { log.info("----------收到消息,开始消费:{}", order); Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG); channel.basicAck(deliveryTag, false); } }
生产者
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
配置文件
spring.rabbitmq.addresses=192.168.223.144:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=3s
发送消息
@Component public class OrderSender { @Autowired private RabbitTemplate rabbitTemplate; public void send(Order order) { CorrelationData correlationData = new CorrelationData(); correlationData.setId(order.getOrderId()); rabbitTemplate.convertAndSend("order-exchange","order.a",order,correlationData); } }
测试
@RunWith(SpringRunner.class) @SpringBootTest public class ProducerApplicationTests { @Autowired private OrderSender orderSender; @Test public void testOrderSender() { Order order = new Order(); order.setOrderId("20300001"); order.setName("订单测试"); order.setMessage(System.currentTimeMillis()+"$"+ UUID.randomUUID().toString()); orderSender.send(order); } }
立志如山 静心求实
浙公网安备 33010602011771号