springboot连rabbitMQ的简介

开一个
docker-compose.yml
填入

version: "3.5"services: rabbitmq:   image: rabbitmq:management   hostname: "y_rabbitmq"   ports:     - "5672:5672"     - "15672:15672"   container_name: yc_rabbitmq

然后在那个资料夹打 docker-compose up --build
这样就能起一个rabbitmq了

再来

盖一个rabbitMQ大概如下。
add queue
add exchange
add queue里面的bind
即可

add queue

http://img2.58codes.com/2024/20111603OEHqJq0ZYL.png!

add exchange

http://img2.58codes.com/2024/20111603YmPgnoHZ10.png!

add queue里面的bind

http://img2.58codes.com/2024/20111603mPYQpAkkVw.png

如果有打进去的话会是这样(还没打 等一下)
http://img2.58codes.com/2024/20111603rdXjYPfc5w.png

java的部分测试的话
pom档+这段

       <!-- Spring AMQP for RabbitMQ -->        <dependency>            <groupId>org.springframework.amqp</groupId>            <artifactId>spring-rabbit</artifactId>        </dependency>

去application.yml +连线资讯 然后把exchange,exchange,queues 等刚刚填在rabbitMQ的资讯写在这

spring :  rabbitmq:    virtual-host: /    username: guest    password: guest    port: 5672    host: 127.0.0.1example:  rabbitmq :    exchange : yc_topic    routing_key : yc_Routing_Key    queues : yc_queues

service :

public interface RabbitService{void sendMessage(String yc);}
@Slf4j@Servicepublic class RabbitServiceImpl implements RabbitService{@Autowiredprivate RabbitServiceClient rabbitServiceClient;@Value("${example.rabbitmq.exchange}")private String exchange;@Value("${example.rabbitmq.routing_key}")private String routingKey;@Overridepublic void sendMessage(String yc){rabbitServiceClient.sendMessage(exchange, routingKey, yc);}}

Client

RabbitServiceClient

@Servicepublic interface RabbitServiceClient{void sendMessage(String exchangeKey, String routingKey, Object message);}
@Slf4j@Componentpublic class RabbitServiceClientImpl implements RabbitServiceClient{private static final MessagePostProcessor rabbitTemplatePostProcessor = new RabbitTemplatePostProcessor();@Autowiredprivate RabbitTemplate rabbitTemplate;@Overridepublic void sendMessage(String exchangeKey, String routingKey, Object message){log.info("Sending one message to host: [{}], port: [{}].", rabbitTemplate.getConnectionFactory().getHost(),rabbitTemplate.getConnectionFactory().getPort());log.info("Sending Routing Key [{}]; exchange [{}]", routingKey, exchangeKey);log.info("message[{}]", message);rabbitTemplate.convertAndSend(exchangeKey, routingKey, message, rabbitTemplatePostProcessor);}}
public class RabbitTemplatePostProcessor implements MessagePostProcessor{@Overridepublic Message postProcessMessage(Message message) throws AmqpException{message.getMessageProperties().setTimestamp(Date.from(Instant.now()));return message;}}

listener:

@Slf4j@Servicepublic class CreateWaybillListener{@RabbitListener(queues = "example.rabbitmq.queues")public void createWaybill(@Payload String yc,@Header(value = AmqpHeaders.RECEIVED_ROUTING_KEY) String receivedRoutingKey){log.info("Reschedule delivery timeslot from FRS: {}; yc: {}", receivedRoutingKey, yc);}}

done.

打controller接sendMessage 就可以了.


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章