linux安装rabbitmq ssm集成rabbitmq

时间:2019-11-30
本文章向大家介绍linux安装rabbitmq ssm集成rabbitmq,主要包括linux安装rabbitmq ssm集成rabbitmq使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

rabbitmq 3.8.0 & erlang 22.1 源码编译安装

摘自 https://www.cnblogs.com/amosli/p/11765483.html

1.安装erlang编译依赖

sudo yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git

1.2.下载erlang22.1源码包
wget http://erlang.org/download/otp_src_22.1.tar.gz

1.3 编译并安装

# 解压
tar -zvxf otp_src_22.1.tar.gz
cd otp_src_22.1
 
#编译&安装
./otp_build autoconf
./configure && make && sudo make install
1.4.验证

erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.5
或

erl
Erlang/OTP 22 [erts-10.5] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe]
 
Eshell V10.5 (abort with ^G)
1>

2.rabbitmq3.8.0 binary安装

2.1.下载rabbitmq安装包
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.8.0/rabbitmq-server-generic-unix-3.8.0.tar.xz

2.2.解压并配置环境变量

解压:
xz -d rabbitmq-server-generic-unix-3.8.0.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.8.0.tar
mv rabbitmq_server-3.8.0 /usr/local/rabbitmq_server-3.8.0

配置环境变量:
vim /etc/profile
# 在最后一行添加如下命令
export PATH=$PATH:/usr/local/lib/erlang/bin:/usr/local/rabbitmq_server-3.8.0/sbin
source /etc/profile

2.3.启动rabbitmq
rabbitmq-plugins enable rabbitmq_management
rabbitmq-server 或 rabbitmq-server -detached(后台运行)
2.4.添加新用户

默认账号密码是(guest/guest)
这里新添加账号:admin/admin

rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator

2.5停止rabbitmq
rabbitmqctl shutdown

2.6.修改核心配置参数

rabbitmq的核心配置参数在/usr/local/rabbitmq_server-3.8.0/ebin/rabbit.app里

vim /usr/local/rabbitmq_server-3.8.0/ebin/rabbit.app
# 找到loopback_users 修改为如下内容(去除 <<"guest">>中<<"">>) {loopback_users, [guest]},

修改完毕后就能解除guest账户的本地登录限制了。


ssm集成rabbitmq

http://127.0.0.1:15672/

 ssm配置

pom.xml

<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.0</version>
</dependency>

<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>





applicationContext-rabbitmq.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.6.xsd">




<!-- rabbitmq连接配置 -->
<!-- virtual-host 就是在(1)中配置的VH-->
<!-- -->
<!-- -->
<rabbit:connection-factory id="connectionFactory" virtual-host="test"
host="192.168.1.49" username="admin" password="admin"
port="5672" />
<rabbit:admin connection-factory="connectionFactory" />


<!-- 声明消息队列,消息系统监听队列 -->
<!-- messageQueue 是在(1)中创建的队列 -->
<rabbit:queue id="messageQueue" durable="true"
auto-delete="false" exclusive="false" name="messageQueue" />
<rabbit:queue id="messageQueue" durable="true"
auto-delete="false" exclusive="false" name="messageQueue1" />
<rabbit:queue id="messageQueue" durable="true"
auto-delete="false" exclusive="false" name="messageQueue2" />


<!-- exchange queue binging key 绑定 -->
<!--声明交换 在(1)配置的交换-->
<rabbit:topic-exchange name="messageExchange"
durable="true" auto-delete="false" id="messageExchange">
<rabbit:bindings>
<!-- 声明队列和交换的关系 -->
<rabbit:binding pattern="message.*" queue="messageQueue"></rabbit:binding>
<rabbit:binding pattern="message.*" queue="messageQueue1"></rabbit:binding>
<rabbit:binding pattern="message.*" queue="messageQueue2"></rabbit:binding>
</rabbit:bindings>
</rabbit:topic-exchange>


<rabbit:template exchange="messageExchange" id="rabbitTemplate"
connection-factory="connectionFactory" />


<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="auto">
<!-- 让消费者监听这个队列 -->
<rabbit:listener ref="messageConsumer" queues="messageQueue" />
<rabbit:listener ref="messageConsumer1" queues="messageQueue1" />
<rabbit:listener ref="messageConsumer2" queues="messageQueue2" />
</rabbit:listener-container>
<!--声明生产者 -->
<bean id="messageSender" class="com.shop.mq.MessageSender">
<property name="amqpTemplate" ref="rabbitTemplate"></property>
<!-- <property name="routingKey" value="message.test" ></property> -->
</bean>
<!--声明消费者 -->
<bean id="messageConsumer" class="com.shop.mq.MessageConsumer" />

<!--声明生产者 -->
<bean id="messageSender1" class="com.shop.mq.MessageSender1">
<property name="amqpTemplate" ref="rabbitTemplate"></property>
<!-- <property name="routingKey" value="message.test" ></property> -->
</bean>
<!--声明消费者 -->
<bean id="messageConsumer1" class="com.shop.mq.MessageConsumer1" />

<!--声明生产者 -->
<bean id="messageSender2" class="com.shop.mq.MessageSender2">
<property name="amqpTemplate" ref="rabbitTemplate"></property>
<!-- <property name="routingKey" value="message.test" ></property> -->
</bean>
<!--声明消费者 -->
<bean id="messageConsumer2" class="com.shop.mq.MessageConsumer2" />


</beans>


生产者MessageSender

package com.shop.mq;


import org.springframework.amqp.core.AmqpTemplate;


public class MessageSender {

private AmqpTemplate amqpTemplate;

private String routingKey;

public AmqpTemplate getAmqpTemplate() {
return amqpTemplate;
}

public void setAmqpTemplate(AmqpTemplate amqpTemplate) {
this.amqpTemplate = amqpTemplate;
}

public String getRoutingKey() {
return routingKey;
}

public void setRoutingKey(String routingKey) {
this.routingKey = routingKey;
}

public void sendDataToQueue(Object obj) {

amqpTemplate.convertAndSend(this.routingKey, obj);
}

}



消费者MessageConsumer 

package com.shop.mq;



import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

public class MessageConsumer implements MessageListener{

private Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
@Override
public void onMessage(Message message) {
// createOrder();
logger.info("receive message:{}",message);
}

}




Controller

package com.shop.controller.test;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import com.shop.mq.MessageSender;
import com.shop.mq.MessageSender1;
import com.shop.mq.MessageSender2;




@Controller
@RequestMapping("/rabbit")
public class MainController {

// 注入消息生产者
@Autowired
private MessageSender messageSender;
// 注入消息生产者
@Autowired
private MessageSender1 messageSender1;
// 注入消息生产者
@Autowired
private MessageSender2 messageSender2;

private Logger logger = LoggerFactory.getLogger(MessageSender.class);

@RequestMapping(value = "/main")
public String main() {
return "main";
}

@RequestMapping(value = "/doValid")
@ResponseBody
public String doValid() {

// 设置RoutingKey,匹配message.*即可
messageSender.setRoutingKey("message.*");
// 发送消息
messageSender.sendDataToQueue("queue insert Queue");

logger.info("to send message:{}","insert Queue");

return "{\"key\" : \"value\"}";
}

@RequestMapping(value = "/doValid1")
@ResponseBody
public String doValid1() {

// 设置RoutingKey,匹配message.*即可
messageSender1.setRoutingKey("message.*");
// 发送消息
messageSender1.sendDataToQueue("queue1 insert Queue");

logger.info("to send message:{}","insert Queue");

return "{\"key\" : \"value\"}";
}

@RequestMapping(value = "/doValid2")
@ResponseBody
public String doValid2() {

// 设置RoutingKey,匹配message.*即可
messageSender2.setRoutingKey("message.*");
// 发送消息
messageSender2.sendDataToQueue("queue2 insert Queue");

logger.info("to send message:{}","insert Queue");

return "{\"key\" : \"value\"}";
}
}







 
 

 

原文地址:https://www.cnblogs.com/cw828/p/11939948.html