ActiveMQ与RabbitMQ基于springboot,docker作为容器技术的实现

引入其他知识进行扩展

1.首先JMS(java Message Service)即java 消息服务,是基于jvm的消息代理的规范,而AcitveMQ,HornetQ是一个JMS代理的实现

AMQP也是一个消息代理的规范,但它不仅兼容JMS,还支持跨平台和语言。AMQP的主要实现是RabbitMQ

2.了解异步消息,队列,主题,点对点式,发布/订阅式

JMS实现过程

1.安装ActiveMQ

(非Docker需要自行下载,Docker如果已经下载ActiveMQ镜像,则运行镜像,注意如果是虚拟机,需要进行端口映射)

2.内嵌ActiveMQ

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-client</artifactId>
        </dependency>

2.配置application.properties

spring.activemq.broker-url=tcp://localhost:61616

实际情况下消息的发布者和接收者是分离的,以下测试放在一个程序里

2.1定义JMS发送的消息需要实现MessageCreator,重写createMessage

public class MessageJms implements MessageCreator{
    
    @Override
    public Message createMessage(Session session) throws JMSException {
        return session.createTextMessage("你好");
    }
    
}

2.2消息的发送及目的地(队列)

@SpringBootApplication
public class JmsApplication implements CommandLineRunner{ 
    
    @Autowired
    JmsTemplate jmsTemplate; 

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

    @Override
    public void run(String... args) throws Exception {
        jmsTemplate.send("my-messge", new Msg()); 
        
    }
}

2.3消息监听

@Component
public class Receiver {

    @JmsListener(destination = "my-messge") //1
    public void receiveMessage(String message) {
        System.out.println("接受到: <" + message + ">");
    }

}

------------------------------------------------------

AMQP

1.安装RabbitMQ

在Docker运行RabbtiMQ镜像,非Docker进行下载安装

Spring boot 默认我们的RabbtiMQ主机为localhost,端口5672,所以无需配置相关信息

2.1发送消息及目的地的定义

@SpringBootApplication
public class AmqpApplication implements CommandLineRunner{
    @Autowired
    RabbitTemplate rabbitTemplate; 

    public static void main(String[] args) {
        SpringApplication.run(AmqpApplication .class, args);
    }
    
    @Bean 
    public Queue amqQueue(){
        return new Queue("amqcout");
    }
    

    @Override
    public void run(String... args) throws Exception {
         rabbitTemplate.convertAndSend("amqcout", "来自RabbitMQ的问候"); 
    }
}

2.2消息监听

@RabbitListener(queues = "amqcout")
    public void receiveMessage(String message) {
        System.out.println("收到 <" + message + ">");
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值