springboot+rabbitmq

本文详细介绍 RabbitMQ 的安装配置过程及其实现消息传递的方法。包括如何安装 Erlang 和 RabbitMQ,配置用户权限,以及使用 Java 代码实现消息的发送与接收等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rabbitmq的流程是发送端-交换机-队列-接收端,交换机的作用是决定消息发送到哪个队列。交换机制有好几种,其中topic较灵活,默认的为路由完全匹配才发送到相应队列。

记录一下rabbitmq的使用。

首先要安装rabbitmq,在此之前,先安装erlang,这个最好选版本在9.3~10.3之间的,我下了一个最新版的有问题。然后添加bin目录到环境变量。

rabbitm安装后,在sbin目录下使用cmd命令运行

rabbitmq-plugins enable rabbitmq_management

这个作用是启动插件管理。然后使用

net stop RabbitMQ && net start RabbitMQ

重启下服务,这个应该要用管理员去运行cmd。

使用

rabbitmqctl  add_user  admin  123456

 添加新用户,后2个是用户名和密码。使用

    rabbitmqctl set_user_tags admin administrator  
    rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"  

设置用户的权限。否则没有权限建立queue之类的。

要修改密码用

rabbitmqctl change_password userName newPassword

访问http://localhost:15672可以看到管理界面了,默认端口号是5672,浏览器却用15672,搞不清楚。

写代码前或写好代码运行前,要先在管理界面新建queue,代码用了哪些就要新建哪些,使用代码自动新建目前不会。

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

依赖为

<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置文件,具体看自己的设置

spring.application.name=spirng-boot-rabbitmq

spring.rabbitmq.host=192.168.0.86
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456

配置一个queue,交换机和相应绑定规则,这里使用的是topic,规则为topic.单词,topic.*或topic.#

*表示一个单词,#可以表示多个单词

    @Configuration  
    public class RabbitConfig {  
      
         @Bean  
        public Queue Queue() {  
            return new Queue("hello"); 
	}
	 TopicExchange exchange() {  
    return new TopicExchange("exchange");  
	}  
  
	@Bean  
	Binding bindingExchangeMessage(Queue queueMessage, TopicExchange exchange) {  
    	return BindingBuilder.bind(queueMessage).to(exchange).with("topic.message");  
	}  
发送端
@Component
public class HelloSender {

	@Autowired
	private AmqpTemplate rabbitTemplate;

	public void send() {
		String context = "hello " + new Date();
		System.out.println("Sender : " + context);
		this.rabbitTemplate.convertAndSend("hello","topic.message",context);//发送到hello队列
	}

}

接收端

@Component
@RabbitListener(queues = "hello")//队列名字为之前命名的hello
public class HelloReceiver {

    @RabbitHandler
    public void process(String hello) {
        System.out.println("Receiver  : " + hello);
    }

}

测试,只要发送了,接收端自动能接收了。

@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMqHelloTest {

	@Autowired
	private HelloSender helloSender;

	@Test
	public void hello() throws Exception {
		helloSender.send();
	}

}

以上是一个简单的一对一发送,还有一对多,多对多的发送。

其中一对多并不是所有消息发送给所有接受者,而是消息均匀分布给接受者。多对多类似。

学习链接:点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值