EJB:事件驱动 bean ---Topics

本文通过创建工具类、发送端和接收端代码,展示了如何使用Java消息服务(JMS)进行消息发布与订阅的过程。具体包括初始化上下文、创建连接工厂、主题会话及消息的发送与接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个工具类:

//ContextFactory.java

package com.youngmaster.jms.utils;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 1:55:42 AM
 */
public class ContextFactory {

	@SuppressWarnings("unchecked")
	public static Context getContext() throws Exception {
		Hashtable props = new Hashtable();

		props.put(Context.INITIAL_CONTEXT_FACTORY,
				"org.jnp.interfaces.NamingContextFactory");

		props.put(Context.PROVIDER_URL, "localhost:1099");

		props.put("java.naming.rmi.security.manager", "yes");

		props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");

		@SuppressWarnings("unused")
		Context context = new InitialContext(props);
		return context;
	}

}

 

发送端:

//Publisher.java

package com.youngmaster.jms.publisher;

import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;

import com.youngmaster.jms.utils.ContextFactory;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 1:21:44 AM
 */
public class Publisher {

	public static void main(String[] args) throws Exception {

		Context context=ContextFactory.getContext();
		TopicConnectionFactory factory = (TopicConnectionFactory) context
		.lookup("ConnectionFactory");
		TopicConnection connection=factory.createTopicConnection();
		TopicSession session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);


		/**
		 * create topic
		 */
		Topic topic = (Topic) context.lookup("topic/testTopic");

		/**
		 * create topicPublisher
		 */
		@SuppressWarnings("unused")
		TopicPublisher topicPublisher = session.createPublisher(topic);

		/**
		 * create TextMessage
		 */
		TextMessage textmessage = session.createTextMessage();
		textmessage.setText("Hello,jms world");

		topicPublisher.send(topic, textmessage);

		session.close();
		connection.close();
	}

}

 

接收端:

//Subscriber.jva

package com.youngmaster.jms.scriber;

import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;

import com.youngmaster.jms.utils.ContextFactory;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 1:39:18 AM
 */
public class Subscriber {

	/**
	 * @param args
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws Exception {
		
		Context context=ContextFactory.getContext();
		TopicConnectionFactory factory = (TopicConnectionFactory) context
		.lookup("ConnectionFactory");
		TopicConnection connection=factory.createTopicConnection();
		TopicSession session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);

		/**
		 * create topic
		 */
		Topic topic = (Topic) context.lookup("topic/testTopic");

		/**
		 * create topicSubscriber
		 */
		TopicSubscriber topicSubscriber = session.createSubscriber(topic);

		topicSubscriber.setMessageListener(new MySubscriber());
		connection.start();
	}

}
 

创建一个监听器:

//MySubscriber.java

package com.youngmaster.jms.scriber;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * @author youngmaster
 * @E-mail:youngmaster.fly@gmail.com
 * @version myEclipse 6.6
 * @create time:Sep 26, 2009 1:40:40 AM
 */
public class MySubscriber implements MessageListener {

	public void onMessage(Message arg0) {

		TextMessage message = (TextMessage) arg0;

		try {
			String text = message.getText();

			System.out.println("=====msg: - " + text);

		} catch (JMSException e) {
			e.printStackTrace();
		}

	}

}
 
python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值