栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

java connectioin rabbit-mq

java connectioin rabbit-mq

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

@Slf4j
@Service
public class MessageService {

    
    public static void handleMessage() throws IOException, TimeoutException {
        ConnectionFactory connectionFactory = new ConnectionFactory();

        // 配置 RabbitMQ 的主机地址
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("admin");
        connectionFactory.setPassword("admin");

        try(
                Connection connection = connectionFactory.newConnection();
                Channel channel = connection.createChannel()
        ) {

            // 名字:属于什么什么就且在前面

            

            // 声明交换机
            channel.exchangeDeclare(
                    // 交换机名称 
                    // 建议名称格式 exchange.<服务名>.<目标服务名>
                    "exchange.order.restaurant",
                    // 队列类型 direct 全匹配
                    BuiltinExchangeType.DIRECT,
                    // 是否持久化,必须持久化,防止 rabbitmq 重启数据丢失
                    true,
                    // 如果没有连接,是否自动删除
                    false,
                    // 是否有其他参数,没有所以 null
                    null
            );

            // 声明队列
            channel.queueDeclare(
                    // 队列名称 
                    // queue.<服务名>
                    "queue.order",
                    // 是否持久化
                    true,
                    // 是否独占,这个服务连接这个队列其他服务就不能连接
                    false,
                    // 是否自动删除
                    false,
                    // 是否存在其他参数
                    null
            );

            // 将交换机、队列绑定到一起,并声明 routingKey
            channel.queueBind(
                    "queue.order",
                    "exchange.order.restaurant",
                    "key.order"
            );

            

            // 声明交换机
            channel.exchangeDeclare(
                    // 交换机名称 
                    // 建议名称格式 exchange.<服务名>.<目标服务名>
                    "exchange.order.deliveryman",
                    // 队列类型 direct 全匹配
                    BuiltinExchangeType.DIRECT,
                    // 是否持久化,必须持久化,防止 rabbitmq 重启数据丢失
                    true,
                    // 如果没有连接,是否自动删除
                    false,
                    // 是否有其他参数,没有所以 null
                    null
            );

            // 我们接受这个消息,永远都是在一个 队列 上接收
            // 只是这个消息可能是不同 交换机 给我们发送过来的

            // 将交换机、队列绑定到一起,并声明 routingKey
            channel.queueBind(
                    "queue.order",
                    "exchange.order.deliveryman",
                    "key.order"
            );
        }
    }

    public static void main(String[] args) throws IOException, TimeoutException {
        handleMessage();
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761679.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号