首页 技术 正文
技术 2022年11月10日
0 收藏 544 点赞 3,363 浏览 6887 个字

模块模式

p2p模式

生产者

ConfigBeanQueue

package com.producerp2p.producerp2p;import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;import javax.jms.Queue;// 配置类--配置文件(Spring的配置文件)
@Configuration
@EnableJms
public class ConfigBeanQueue { // 属性注入的方式
@Value("${queue-boot-name}")
private String queueName; // 创建队列Queue并设置队列名称
@Bean
public Queue createQueue(){
return new ActiveMQQueue(queueName);
}
}

QueueProducer

package com.producerp2p.producerp2p;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import javax.jms.Queue;@Component
public class QueueProducer { // 属性注入
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate; @Autowired
private Queue queue; // 发送消息
public void sendMsg(){
jmsMessagingTemplate.convertAndSend(queue,"QueueProducer发送消息到对列");
} // 定时发送消息: 每隔3秒发送一条消息 微服务项目启动的时候自动执行使用@Scheduled修饰的方法
@Scheduled(fixedDelay = 3000l)
public void sendMsgScheduled(){
jmsMessagingTemplate.convertAndSend(queue,"QueueProducer发送定时消息到队列");
System.out.println("-------定时消息发送完成-------");
}}

Producerp2pApplication

package com.producerp2p.producerp2p;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication@EnableScheduling
public class Producerp2pApplication { public static void main(String[] args) {
SpringApplication.run(Producerp2pApplication.class, args);
}}

application.properties

server.port=7777
# 配置activemq连接,url
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin
# activemq的模式queue(false),topic(true)
spring.jms.pub-sub-domain=false
# 队列名称
queue-boot-name=newqueue

Producerp2pApplicationTests

package com.producerp2p.producerp2p;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class Producerp2pApplicationTests { @Autowired
private QueueProducer queueProducer; @Test
void testSendMsg() {
queueProducer.sendMsg();
System.out.println("------消息发送到队列完成-------");
}}

消费者

application.properties

server.port=7778
# 配置activemq连接,url
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin
# activemq的模式queue(false),topic(true)
spring.jms.pub-sub-domain=false
# 队列名称
queue-boot-name=newqueue

QueueConsumer

package com.consumerp2p.consumerp2p;import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;import javax.jms.JMSException;
import javax.jms.TextMessage;@Component
public class QueueConsumer { // 接收消息---设置消费者监听的目的地(队列), 如果监听到队列中有消息,通过方法的形参表示接收到的消息
// Message:TextMessage
@JmsListener(destination = "${queue-boot-name}")
public void receiveMsg(TextMessage textMessage) throws JMSException {
System.out.println("p2p模式下的消费者1接收到队列中的消息:"+textMessage.getText()); }
}

Consumerp2pApplication

Consumerp2pApplication11

package com.consumerp2p.consumerp2p;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Consumerp2pApplication11 { public static void main(String[] args) {
SpringApplication.run(Consumerp2pApplication11.class, args);
}}

——————

———————————————————————————-

———————-

Topic模式

生产者

ConfigBeanTopic

package com.producertopic.producertopic;import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;import javax.jms.Topic;@Configuration
@EnableJms
public class ConfigBeanTopic {
// 注入主题属性
@Value("${topic-boot-name}")
private String topicName; // 创建主题并设置主题名称
@Bean
public Topic createTopic(){
return new ActiveMQTopic(topicName);
}}

ProducerTopic

package com.producertopic.producertopic;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import javax.jms.Topic;@Component
public class ProducerTopic { // 属性注入
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate; @Autowired
private Topic topic; // 定时发送消息
@Scheduled(fixedDelay = 2000l)
public void sendMsg(){
jmsMessagingTemplate.convertAndSend(topic,"发送定时消息到主题");
System.out.println("-----主题消息发送完成------");
}}

ProducertopicApplication

package com.producertopic.producertopic;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class ProducertopicApplication { public static void main(String[] args) {
SpringApplication.run(ProducertopicApplication.class, args);
}}

application.properties

server.port=7779
# 配置activemq连接,url
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin
# activemq的模式queue(false),topic(true)
spring.jms.pub-sub-domain=true
# 主题名称
topic-boot-name=newtopic

消费者

TopicConsumer

package com.consumertopic.consumertopic;import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;import javax.jms.JMSException;
import javax.jms.TextMessage;@Component
public class TopicConsumer { // 接收消息---设置消费者监听的目的地(队列), 如果监听到队列中有消息,通过方法的形参表示接收到的消息
// Message:TextMessage
@JmsListener(destination = "${topic-boot-name}")
public void receiveMsg(TextMessage textMessage) throws JMSException {
System.out.println("topic下的消费者接收到主题中的消息:"+textMessage.getText());
}
}

application.properties

server.port=7776
# 配置activemq连接,url
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin
# activemq的模式queue(false),topic(true)
spring.jms.pub-sub-domain=true
# 主题名称
topic-boot-name=newtopic

ConsumertopicApplication

package com.consumertopic.consumertopic;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ConsumertopicApplication { public static void main(String[] args) {
SpringApplication.run(ConsumertopicApplication.class, args);
}}

ConsumertopicApplication2

package com.consumertopic.consumertopic;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ConsumertopicApplication2 { public static void main(String[] args) {
SpringApplication.run(ConsumertopicApplication2.class, args);
}}
public class ProducertopicApplication {
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,129
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,601
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,444
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,217
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,852
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,940