消息中间件(四) ActiveMQ项目实战(点对点模式)

队列模式

生产者

1、首先新建springboot项目并添加依赖

</dependency>
     <dependency>  
     <groupId>org.springframework.boot</groupId>  
     <artifactId>spring-boot-starter-activemq</artifactId>  
</dependency>
<!-- 线程池 -->
<dependency>  
     <groupId>org.apache.activemq</groupId>  
     <artifactId>activemq-pool</artifactId>  
</dependency>

2、启动类添加注解

@EnableJms

3、创建CreatBean类,用来创建bean

@Component
public class CreatBean {

	@Bean
	public Queue queue() {
		return new ActiveMQQueue("my.queue");
	}

	@Bean
	public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) {
		DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
		bean.setPubSubDomain(true);
		bean.setConnectionFactory(activeMQConnectionFactory);
		return bean;
	}
}

4、配置文件添加activeMq配置

spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin

spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=100

5、添加service

@Service
public class ProducerServiceImpl implements ProducerService {

	Logger logger = LoggerFactory.getLogger(ProducerServiceImpl.class);

	@Autowired
	private JmsMessagingTemplate jmsTemplate;

	@Override
	public void sendMessage(Destination destination, String message) {
		logger.info("准备发送消息的是:" + message);
		jmsTemplate.convertAndSend(destination, message);
	}

}

6、添加Controller

@RestController
@RequestMapping("/queue")
public class QueueController {

	@Autowired
	private ProducerService producerService;

	@Autowired
	private Queue queue;

	@RequestMapping("/{msg}")
	public String sendQueue(@PathVariable String msg) {
		producerService.sendMessage(queue, msg);
		return msg + "发送成功";
	}

}

启动主函数访问http://localhost:8081/queue/XXX就可以往队列中添加数据

 

消费者

1、添加maven依赖,同上

2、添加配置文件,同上

3、主函数添加注解,同上

4、添加QueueConsumer类用户接收数据

@Component
public class QueueConsumer {

	Logger logger = LoggerFactory.getLogger(QueueConsumer.class);

	@JmsListener(destination = "my.queue")
	public void receiveQueue1(String text) {
		logger.info("消费者1收到的报文为:" + text);
	}

	@JmsListener(destination = "my.queue")
	public void receiveQueue2(String text) {
		logger.info("消费者2收到的报文为:" + text);
	}
}

测试

访问http://localhost:8081/queue/123465 8次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值