开一个
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
即可
!
!
如果有打进去的话会是这样(还没打 等一下)
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.1
rabbitmq :
exchange : yc_topic
routing_key : yc_Routing_Key
queues : yc_queues
public interface RabbitService
{
void sendMessage(String yc);
}
@Slf4j
@Service
public class RabbitServiceImpl implements RabbitService
{
@Autowired
private RabbitServiceClient rabbitServiceClient;
@Value("${rabbitmq.exchange}")
private String exchange;
@Value("${rabbitmq.routing_key}")
private String routingKey;
@Override
public void sendMessage(String yc)
{
rabbitServiceClient.sendMessage(exchange, routingKey, yc);
}
}
RabbitServiceClient
@Service
public interface RabbitServiceClient
{
void sendMessage(String exchangeKey, String routingKey, Object message);
}
@Slf4j
@Component
public class RabbitServiceClientImpl implements RabbitServiceClient
{
private static final MessagePostProcessor rabbitTemplatePostProcessor = new RabbitTemplatePostProcessor();
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public 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
{
@Override
public Message postProcessMessage(Message message) throws AmqpException
{
message.getMessageProperties().setTimestamp(Date.from(Instant.now()));
return message;
}
}
@Slf4j
@Service
public class CreateWaybillListener
{
@RabbitListener(queues = "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 就可以了.
<<: (ISC)² 道德规范(Code of Ethics Canons)
Hello 大家, 明明是普通的周末, 不知为何这周一堆人出去玩@@ 我错过了甚麽吗? 今天来讲媒体...
You wanna cry, but tearless. The General Manager i...
今天似乎是第 30 天,轻松一下~ 来介绍一些好用的 package (伪)结赛感言 总之晃的一下就...
在与团队成员的定期面谈中,一个很常被问到的问题:「可以给我一点职涯发展的建议吗?我要怎麽做,才能成为...
Xcode(swift,OC)效能分析工具 Instruments — Time Profiler使...