消息中间件之ActiveMQ--SpringBoot整合ActiveMQ

【笔记于学习尚硅谷课程所作】

7、SpringBoot整合ActiveMQ

7.1 队列

7.1.1 生产者

  1. pom.xml
  2. application.yml
  3. 配置bean
  4. 生产者
  5. 主启动类
  6. 测试单元

1.pom.xml

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-activemq -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

2.application.yml

spring:
	activemq:
		broker-url: tcp://192.168.111.136:61616 #自己的MQ服务器地址,用自己的
		user: admin
		password: admin
	jms:
		pub-sub-domain: false	# false = Queue   true = Topic

#自己定义队列名称
myqueue: boot-activemq-queue

3.配置bean

@Component
@EnableJms
public class ConfigBean{
	
    @Value("${myqueue}")
	private String myQueue;
	
	@Bean
	public Queue queue(){
        return new ActiveMQQueue(myQueue);
    }		
}

4.生产者

@Component
public class Queue_Produce{

    @Autowired
	private JmsMessagingTemplate jmsMessagingTemplate;
	@Autowired
	private Queue queue;
    
	public void produceMsg(){
        jmsMessagingTemplate.convertAndSend(queue,"一条消息");
		System.out.println("produceMsg task is over");
	}
}

5.主启动类

@SpringBootApplication
public class MainApp_Produce{
	public static void main(String[] args){
		SpringApplication.run(MainApp_Produce.class,args);
	}
}

6.测试单元

@SpringBootTest(classes = MainApp_Produce.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestActiveMQ{

    @Resource
	private Queue_Produce queue_produce;
	
    @Test
	public void testSend() throws Exception{
        queue_produce.produceMsg();
    }
}

7.1.2 生产者之定时投递

1.修改生产者(新增定时投递方法)

//添加定时投递方法

//间隔时间3秒钟定投
@scheduled(fixedDelay = 3000)
public void produceMsgScheduled(){
    jmsMessagingTemplate. convertAndSend(queue,"一条消息");
    System.out.println("send ok");
}

2.修改主启动类(直接启动主启动类,间隔发送)

//添加注解
@EnableScheduling

7.1.3 消费者

​ 大部分步骤同生产者,这里只阐述不一样的

1.消费者

@Component
public class Queue_consumer{
	@JmsListener(destination = "${myqueue}")
	public void receive(TextMessage textMessage) throws JMSException{
        system.out.println("消费者收到消息:"+textMessage.getText());
    }		
}

7.2 主题

7.2.1 生产者

部分与队列相同,只阐述不同点

1.application.yml

pub-sub-domain: true	# false = Queue   true = Topic

#自己定义的队列名称
myTopic: boot-activemq-topic

2.配置bean

@Component
public class ConfigBean{
	
    @Value("${myTopic}")
	private String topicName;
	
    @Bean
	public Topic topic(){
		return new ActiveMQTopic(topicName);
	}
}

3.生产者

@Component
public class Topic_Produce{

    @Autowired
	private JmsMessagingTemplate jmsMessagingTemplate; 
	@Autowired
	private Topic topic;

    @Scheduled(fixedDelay = 3000)
	public void produceTopic(){
		jmsMessagingTemplate.convertAndsend(topic,"主题消息");
    }
}

7.2.2 消费者

与上大致相同,不再阐述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值