1、AMQP
????????AMQP,即Advanced Message Queuing Protocol(高級消息隊列協(xié)議),一個提供統(tǒng)一消息服務(wù)的應(yīng)用層標準高級消息隊列協(xié)議,是應(yīng)用層協(xié)議的一個開放標準,為面向消息的中間件設(shè)計,基于此協(xié)議的客戶端與消息中間件傳遞消息,不受客戶端/中間件不同產(chǎn)品、不同開發(fā)語言等條件的限制。該協(xié)議是一種二進制協(xié)議,提供客戶端應(yīng)用于消息中間件之間異步、安全、高效的交互。相對于我們常見的REST API,AMQP更容易實現(xiàn),可以降低開銷,同時靈活性高,可以輕松的添加負載平衡和高可用性的功能,并保證消息傳遞,在性能上AMQP協(xié)議也相對更好一些。
2、Java實例-簡單模式(Simple Mode)
????????簡單模式(Simple Mode):這是最基本的消息模型,其中生產(chǎn)者將消息發(fā)送到隊列,消費者從中獲取消息并進行處理。在這種模式下,每個消息只能由一個消費者處理,但可以實現(xiàn)多個任務(wù)并行處理。
2.1、項目結(jié)構(gòu)-聚合工程
2.2、導(dǎo)包-主pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast.demo</groupId>
<artifactId>mq-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>publisher</module>
<module>consumer</module>
</modules>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>
<relativePath/>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--AMQP依賴,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--單元測試-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--Jackson-->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
</dependencies>
</project>
2.3、生產(chǎn)者publisher-pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mq-demo</artifactId>
<groupId>cn.itcast.demo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>publisher</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
2.4、消費者consumer-pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>mq-demo</artifactId>
<groupId>cn.itcast.demo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>consumer</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
3、yml配置
3.1、生產(chǎn)者publisher-yml
logging:
pattern:
dateformat: MM-dd HH:mm:ss:SSS
spring:
rabbitmq:
host: 192.168.18.11
port: 5672
virtual-host: /
username: guest
password: guest
3.2、消費者consumer-yml
logging:
pattern:
dateformat: MM-dd HH:mm:ss:SSS
spring:
rabbitmq:
host: 192.168.18.11
port: 5672
virtual-host: /
username: guest
password: guest
4、生產(chǎn)者發(fā)送消息
@SpringBootTest
public class SpringAmqpTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void testSendMessage2Queue() {
String queueName = "hello.queue1";
String msg = "hello, amqp!";
rabbitTemplate.convertAndSend(queueName,msg);
}
}
5、消費者接收消息
@Slf4j
@Component
public class MqListener {
@RabbitListener(queues = "hello.queue1")
public void listenSimpleQueue(String msg){
System.out.println("消費者收到了simple.queue的消息:【" + msg +"】");
}
}
6、測試
6.1、發(fā)消息
6.2、查看消息
文章來源:http://www.zghlxwxcb.cn/news/detail-820417.html
6.3、接收消息
文章來源地址http://www.zghlxwxcb.cn/news/detail-820417.html
到了這里,關(guān)于rabbitmq基礎(chǔ)-java-1、快速入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!