rabbitmq入门
1.生产者(服务提供方)
//依赖<dependencies>
<!-- rabbitmq客户端依赖--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency></dependencies>
<!-- 指定jdk版本--><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build>
使用步骤
1.创建连接队列名称
public static final String QUEUE_NAME="hello";
2.创建连接工厂
//ip和账号密码以自己电脑为准public static void main(String[] args) throws IOException, TimeoutException {//创建连接工厂ConnectionFactory factory=new ConnectionFactory();//工厂ip连接rabbitmq的队列factory.setHost("192.168.187.132");factory.setUsername("admin");factory.setPassword("admin");
3.创建连接
//连接后不是直接使用,而是通过信道
Connection connection = factory.newConnection();Channel channel=connection.createChannel();
4.设置信道参数
/*** 生成一个队列,下面使用到的参数* 1.队列名称* 2.队列里面的消息是否持久化,默认false存在内存,true持久化,存在磁盘* 3.队列消息是否共享,true表示可共享,false表示只能一个人使用* 4.最后一个消费者断开连接以后,是否自动删除,true表示自动删除* 5.其他参数*/channel.queueDeclare(QUEUE_NAME,false,false,false,null);String message="hello rabbitmq";
5.发送信息
/*** 发送一个消费* 1.发送到哪一台交换机* 2.路由的key,本次是队列的名称* 3.其他参数消息* 4.发送消息的消息体*/channel.basicPublish("",QUEUE_NAME,null,message.getBytes());System.out.println("消息发送成功");
2.消费者
使用步骤
1.定义队列名称
//必须和生产者的队列名称一样,才能接收到消息
public static final String QUEUE_NAME="hello";
2.创建工厂
public static void main(String[] args) throws IOException, TimeoutException {ConnectionFactory factory=new ConnectionFactory();factory.setHost("192.168.187.132");factory.setUsername("admin");factory.setPassword("admin");
3.建立连接
Connection connection= factory.newConnection();Channel channel=connection.createChannel();
4.申明接收消息
DeliverCallback deliverCallback=(consumerTag,message)->{System.out.println(new String(message.getBody()));};CancelCallback cancelCallback=consumerTag->{System.out.println("消息被中断");};
5.接收消息
/*** 消费者消费消息* 1.消费哪个队列* 2.消费成功后,是否需要自动应答,true表示自动应答* 3.消费未成功的回调* 4.消费者取消消费的回调*/channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);
注意:在使用mq的时候,需要将端口打开,并且登陆的账号需要获取权限
获取权限