RabbitMQ工具类

1:生产者

package org.jeecg.modules.test.rabbitmq.controller;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

/**
 * 生产者
 * @author lgr
 */
public class Producer {

    public static void producer(){
        ConnectionFactory factory =  new ConnectionFactory();
        factory.setHost("。。。。。");
        factory.setPort(。。。。。);
        factory.setUsername("。。。。。");
        factory.setPassword("。。。。。");
        try{
            //获取连接
            Connection connection = factory.newConnection();
            //创建通道
            Channel channel = connection.createChannel();
            //---生成交换机
            //1:交换机名称
            //2:交换机类型,fanout代表交换机是广播类型
            //3:是否持久化
            //4:设置是否自动删除。设置为true时,则表示自动删除。前提是至少有一个队列或者交换器与这个交换器绑定,之后,所有与这个交换器绑定的队列或者交换器都与此解绑。不能错误的理解—当与此交换器连接的客户端都断开连接时,RabbitMq会自动删除本交换器
            //5:设置是否内置。设置为true,则表示内置的交换器,客户端程序无法直接发送消息到这个交换器中,只能通过交换器路由到交换器这种方式
            //6:其他参数
            channel.exchangeDeclare("exchange", "fanout", true, true, true, null);
            //---生成队列
            //1:队列名称
            //2:是否持久化
            //3:是否提供多个消费者消费,是否消息共享
            //4:是否自动删除
            //5:其他参数
            channel.queueDeclare("hello", true, true, true, null);
            //---交换机和队列绑定
            //1:队列名称
            //2:交换机名称
            //3:绑定的路由键
            //4:绑定参数
            channel.queueBind("hello", "exchange", "", null);
            //---发出消息
            //1:交换机名称
            //2:队列名称
            //3:发出消息的类型
            //4:发出的消息
            channel.basicPublish("exchange", "hello", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello rabbitMQ".getBytes());
            channel.close();
            connection.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

2:消费者

package org.jeecg.modules.test.rabbitmq.controller;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * 消费者
 * @author lgr
 */
public class Consumer {

    public static void consumer() {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("。。。。。");
        factory.setPort(。。。。。);
        factory.setUsername("。。。。。");
        factory.setPassword("。。。。。");
        try{
            //获取连接
            Connection connection = factory.newConnection();
            //创建通道
            Channel channel = connection.createChannel();
            //---生成队列
            //1:队列名称
            //2:是否持久化
            //3:是否提供多个消费者消费,是否消息共享
            //4:是否自动删除
            //5:其他参数
            channel.queueDeclare("hello", true, true, true, null);
            //获取消息
            channel.basicConsume("hello", true, new DefaultConsumer(channel){
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.err.println("取出消息:" + new String(body));
                }
            });
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

3:mian方法测试

public static void main(String[] args) {
    -----;        
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 RabbitMQ 工具类,可以用于发送和接收消息: ```java import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.DeliverCallback; import java.io.IOException; import java.util.concurrent.TimeoutException; public class RabbitMQUtil { private static final String QUEUE_NAME = "my-queue"; public static void send(String message) throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { channel.queueDeclare(QUEUE_NAME, false, false, false, null); channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); } } public static void receive() throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); DeliverCallback deliverCallback = (consumerTag, delivery) -> { String message = new String(delivery.getBody(), "UTF-8"); System.out.println("Received message: " + message); }; channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { }); } } ``` 以上是一个基础的 RabbitMQ 工具类,使用时需要先安装 RabbitMQ,并且启动 RabbitMQ 服务。同时,需要引入 RabbitMQ 的依赖: ```xml <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.12.0</version> </dependency> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值