新项目
新建一个项目,引入web和rabbitMQ
可以看到rabbitMQ引入的pom包
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
原理
1、首先是RabbitAutoConfiguration
2、接着是自动配置了连接工厂CachingConnectionFactory
3、可以被配置的项目存在于RabbitProperties
@ConfigurationProperties(
prefix = "spring.rabbitmq"
)
public class RabbitProperties {
private String host = "localhost";
private int port = 5672;
private String username = "guest";
private String password = "guest";
private final RabbitProperties.Ssl ssl = new RabbitProperties.Ssl();
private String virtualHost;
private String addresses;
@DurationUnit(ChronoUnit.SECONDS)
private Duration requestedHeartbeat;
private boolean publisherConfirms;
private boolean publisherReturns;
private Duration connectionTimeout;
private final RabbitProperties.Cache cache = new RabbitProperties.Cache();
private final RabbitProperties.Listener listener = new RabbitProperties.Listener();
private final RabbitProperties.Template template = new RabbitProperties.Template();
private List<RabbitProperties.Address> parsedAddresses;
4、RabbitTemplate给MQ发送和接受消息
5、AmqpAdmin为MQ系统管理组件
书写一个测试类
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void contextLoads() {
/**
* message 可以定制消息体内容以及消息头*/
//rabbitTemplate.send(exchage,routekey,message);
//只需要传入要发送的对象,自动序列化发送给rabbitMQ,object默认的消息体
//rabbitTemplate.convertAndSend(exchage,routekey,object);
Map<String, Object> map = new HashMap<>();
map.put("message", "");
map.put("date", Arrays.asList("ssdasd", 1231, true));
rabbitTemplate.convertAndSend("exchange.direct", "atlybnews", map);
}
可以看到数据发送到rabbitmq服务器上了
“来宾”用户只能从本地主机连接
默认情况下,禁止来宾用户从远程主机连接;它只能通过回送接口(即localhost)进行连接。这适用于与协议无关的连接。默认情况下,任何其他用户都不会受到这种方式的限制。
因此在登录远程地址的时候。推荐新建一个用户。并且给与其相对应的权限