顾文强
顾文强
Published on 2025-01-21 / 3 Visits
0
0

Ubuntu 安装 RabbitMQ

1 安装rabbitmq-server

apt install rabbitmq-server -y

2 开启web管理

rabbitmq-plugins enable rabbitmq_management

3 登录web端

访问地址 http://localhost:15672 用户名: guest 密码:guest

4 更改用户名密码

sudo rabbitmqctl list_users
sudo rabbitmqctl add_user admin admin
sudo rabbitmqctl set_user_tags admin administrator

5 SpringBoot 配置

5.1 添加maven依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<dependency>
	<groupId>com.fasterxml.jackson.dataformat</groupId>
	<artifactId>jackson-dataformat-xml</artifactId>
</dependency>

5.2 添加转换类

@Component
class RabbitMqConfig {
    @Bean
    fun jsonMessageConverter(): MessageConverter {
        return Jackson2JsonMessageConverter()
    }
}

5.3 创建接口

举例:WimMessageQueueService接口interface

interface WimMessageQueueService {
    fun sendDataPacket(wimDataPacket: WimDataPacket)
}

WimMessageQueueServiceImpl服务类

@Service
class WimMessageQueueServiceImpl: WimMessageQueueService {
    @Autowired
    lateinit var rabbitTemplate: RabbitTemplate

    override fun sendDataPacket(wimDataPacket: WimDataPacket) {
        rabbitTemplate.convertAndSend("data.packet.exchange","all", wimDataPacket)
    }

    @RabbitListener(queues = ["data.packet.queue"])
    fun receiveDataPacket(wimDataPacket: WimDataPacket) {
        wimDataPacket.toJSONString().println("receive1")
    }

    @RabbitListener(queues = ["data.packet.queue"])
    fun receiveDataPacket2(wimDataPacket: WimDataPacket) {
        wimDataPacket.toJSONString().println("receive2")
    }

    @RabbitListener(bindings = [QueueBinding(value = Queue(name = "data.packet.mysql.queue", durable = "true"),
        exchange = Exchange(name = "data.packet.exchange", type = ExchangeTypes.DIRECT), key = ["all", "mysql"]),
    ])
    fun receiveDataPacketMysql(wimDataPacket: WimDataPacket) {
        wimDataPacket.toJSONString().println("all, mysql")
    }

    @RabbitListener(bindings = [QueueBinding(value = Queue(name = "data.packet.redis.queue", durable = "true"),
        exchange = Exchange(name = "data.packet.exchange", type = ExchangeTypes.DIRECT), key = ["all", "redis"]),
    ])
    fun receiveDataPacketRedis(wimDataPacket: WimDataPacket) {
        wimDataPacket.toJSONString().println("all, redis")
    }
}


Comment