windows安装rabbitMq与使用
这里安装的版本为
erlang: V12.3
rabbitMq:3.10.18
注意:需要找对应的版本
下载与安装erlang
原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。
下载地址:http://www.erlang.org/downloads
这里的otp显示26.1.2
双击启动,点next安装即可!
安装好后配置环境变量
变量名:ERLANG_HOME 变量值就是刚才erlang的安装地址,点击确定。
然后双击系统变量path,点击“新建”,将%ERLANG_HOME%\bin加入到path中。
查询erlang版本号
下载与安装rabbitMq
下载地址:https://www.rabbitmq.com/news.html
找到你要安装的版本,点击标题进入github中
这里安装的是3.10.18
注意:如果erlang与rabbitMq的版本不匹配,rabbitMq是安装不了的!
安装RabbitMQ管理插件
打开命令行cmd,输入RabbitMQ的sbin目录
rabbitmq-plugins enable rabbitmq_management
接着输入rabbitmq-server.bat 启动rabbitMq
出现和上面相同的输出内容,代码启动成功,在浏览器访问 http://localhost:15672
代码配置端口为:5672
初始账号和密码如下:
Username:guest
Password:guest
下面使用springboot整合rabbitmq实操
首先创建生产者,生产者发送消息,创建两个项目,然后消费者拿到消息去消费,整个流程就是这样子~
1.创建生产者
导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
rabbitmq配置类
配置Exchange、Queue、及绑定交换机
@Configuration public class RabbitmqConfig { /** * 交换机名称 */ public static final String ETAX = "etax"; /** * 队列名称 */ public static final String QUEUE_COMPANY_NAME = "zerody.company-name"; /** * 声明交换机 * * @return */ @Bean TopicExchange exchange() { return new TopicExchange(RabbitmqConfig.ETAX); } /*------------------------------------------------------*/ @Bean public Queue customerLoansFailReason() { return new Queue(RabbitmqConfig.QUEUE_COMPANY_NAME, true); } @Bean public Binding bindingCustomerFailReasonQueue() { return BindingBuilder.bind(customerLoansFailReason()).to(exchange()).with(RabbitmqConfig.QUEUE_COMPANY_NAME); } }
yml配置
server: port: 8081 spring: application: name: test-rabbitmq-producer rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest virtualHost: /
生产者创建发送消息
这里直接写在测试类中
@SpringBootTest class RabbitmqProducerApplicationTests { @Autowired RabbitTemplate rabbitTemplate; @Test public void Producer_topics_springbootTest() { //使用rabbitTemplate发送消息 String message = "对象科技有限公司"; /** * 参数: * 1、交换机名称 * 2、routingKey * 3、消息内容 */ rabbitTemplate.convertAndSend(RabbitmqConfig.ETAX, RabbitmqConfig.QUEUE_COMPANY_NAME, message); } }
发送成功
2.创建消费者
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
配置类
@Configuration public class RabbitmqConfig { /** * 交换机名称 */ public static final String ETAX = "etax"; /** * 队列名称 */ public static final String QUEUE_COMPANY_NAME = "zerody.company-name"; /** * 配置交换机 * @return */ @Bean TopicExchange exchange() { return new TopicExchange(RabbitmqConfig.ETAX); } @Bean public Queue customerLoansFailReason() { return new Queue(RabbitmqConfig.QUEUE_COMPANY_NAME, true); } }
yml
server: port: 8083 spring: application: name: test-rabbitmq-consumer rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest virtualHost: /
监听类
@Slf4j @Component public class ReceiveHandler { @RabbitHandler @RabbitListener(queues = RabbitmqConfig.QUEUE_COMPANY_NAME) public void process(@Payload String object, Message message, Channel channel) { log.info("企业信息 :{} ", object); try { } catch (Exception e) { log.error("企业查找通知异常:{}", e.getMessage(), e); } try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (Exception e) { log.error("企业查找通知确认异常:", e); } } }
监听成功
rabbitmq控制台
从这里可以看到交换机与路由已经绑定了,消息已经发送成功
如果发送或者监听消息出错,一定要仔细检查报错日志~