- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在实现 MessageListner 类的 onMessgae () 方法,但即使我将调试点放入此方法中,它也不起作用,但调试器也不会进入此方法中。
使用该方法接收来自Queue的消息。下面是我用于接收消息的代码,但当我通过发送者类发送消息时它没有给出任何消息,并且它的消息发送到 JMS 服务器并在服务器上显示为这样
名称服务器目的地当前消息当前消息待处理消息已接收 JMSServer-0 AdminServer 3 15 1 2
接收者代码:
{
import java.util.Hashtable;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class QueueReceive implements MessageListener {
public final static String Server="t3://localhost:7001";
public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
public final static String JMS_FACTORY = "CF1";
enter code here
public final static String QUEUE = "Queue1";
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueReceiver qreceiver;
private Queue queue;
private boolean quit = false;
String s1 = "avanish";
public void init(Context ctx, String queueName) throws NamingException, JMSException {
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup(queueName);
qreceiver = qsession.createReceiver(queue);
qreceiver.setMessageListener(this);
qcon.start();
System.out.println(qreceiver.receive());
}
public void close() throws JMSException {
qreceiver.close();
qsession.close();
qcon.close();
}
public static void main(String[] args) throws Exception {
/*if (args.length != 1) {
System.out.println("Usage: java examples.jms.queue.QueueReceive WebLogicURL");
return;
}*/
InitialContext ic = getInitialContext();
QueueReceive qr = new QueueReceive();
qr.init(ic, QUEUE);
System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
synchronized (qr) {
while (!qr.quit) {
try {
qr.wait();
} catch (InterruptedException ie) {
}
}
}
qr.close();
}
private static InitialContext getInitialContext() throws NamingException {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, Server);
return new InitialContext(env);
}
@Override
public void onMessage(Message msg) {
try {
String msgText;
if(msg instanceof TextMessage){
msgText = ((TextMessage) msg).getText();
}
else{
msgText = msg.toString();
}
System.out.println("reciver msg" + msgText);
if(msgText.equalsIgnoreCase("quit")){
synchronized (this) {
quit= true;
this.notifyAll();
}
}
} catch (JMSException e) {
System.err.println("Exception" + e.getMessage());
}
}
}
}
发件人代码:{
import javax.jms.JMSException;
import javax.jms.Queue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;
import javax.jms.*;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class QueueSend {
public final static String Server="t3://localhost:7001";
public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
public final static String JMS_FACTORY = "CF1";
public final static String QUEUE = "Queue1";
// public final static String QUEUE = "DQ";
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueSender qsender;
private Queue queue;
private TextMessage msg;
public void init(Context ctx, String queueName) throws NamingException, JMSException
{
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup(queueName);
qsender = qsession.createSender(queue);
msg = qsession.createTextMessage();
qcon.start();
}
public void send(String message) throws JMSException {
msg.setText(message);
//msg.acknowledge();
qsender.setPriority(9);
qsender.send(msg);
}
public void close() throws JMSException {
qsender.close();
qsession.close();
qcon.close();
}
public static void main(String[] args) throws Exception {
InitialContext ic = getInitialContext();
QueueSend qs = new QueueSend();
qs.init(ic, QUEUE);
readAndSend(qs);
qs.close();
}
private static void readAndSend(QueueSend qs) throws IOException, JMSException
{
BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
String line = null;
boolean quitNow = false;
do {
System.out.print("Enter message (\"quit\" to quit): \n");
line = msgStream.readLine();
if (line != null && line.trim().length() != 0) {
qs.send(line);
System.out.println("JMS Message Sent: " + line + "\n");
quitNow = line.equalsIgnoreCase("quit");
}
} while (!quitNow);
}
private static InitialContext getInitialContext()
throws NamingException
{
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, Server);
return new InitialContext(env);
}
}
}
最佳答案
使用 MessageListener 我使用了下面的代码行并从队列中获取了确切的消息
queue = (Queue) ctx.lookup(queueName);
qreceiver = qsession.createReceiver(queue);
message = qreceiver.receiveNoWait();
它已成功接收来自队列的消息。
关于java - 消息监听器 onMessage() 方法不会从队列中读取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154073/
在 background.html : chrome.tabs.query({active:true, currentWindow:true},function(tabs){ chrome.tab
作为 websocket 客户端,我们可以访问 onMessage 函数,该函数在客户端每次从服务器接收到消息时都会触发。我试图了解如果在 onMessage 事件上调用的代码块需要更长的时间来运行接
这是我的代码: initializeApp() async { FirebaseMessaging firebaseMessaging = FirebaseMessaging(); fireb
对于 Delphi Win32 (VCL),我使用: Application.OnMessage := MyAppMessage; FireMonkey 中的等效项是什么? 我有一个例程,需要捕获应用
我使用 Application.OnMessage 事件处理程序来处理来自程序中其他线程的消息(通知)。我发现如果弹出菜单处于事件状态(打开),则不会调用此事件处理程序。测试代码如下(没有线程但原理是
所以我正在为 Firefox 开发我的下一个附加组件,但是,在阅读 ContextMenus 的文档时,似乎永远不会调用 onMessage 事件,这是我的代码: exports.main = fun
我尝试在我的项目中实现 GCM,但 onMessage 函数出现问题。根据例子,我写: @Override protected void onMessage(Context arg0, Intent
hi This : var fees=document.getElementById("conn"); var btn=document.getE
当添加回调以捕获通过 web worker 管道传输的数据时,您通常会这样做: worker.addEventListener("message", function(event) { var
我有一个发送消息的浏览器操作 chrome.browserAction.onClicked.addListener(function(tab) { var message = {
我正在使用 django-channels 在 django 应用程序中实现套接字。 我关注了instructions它起作用了: socket = new WebSocket("ws://127.0
我正在挂载中设置回调: data() { return { code: 'Apple', } }, mounted() { console.log(this.c
我尝试通过 JS-WebSocket 在 Java WebsocketServer ( https://github.com/TooTallNate/Java-WebSocket) 与网页之间进行通信
我遇到过这样的问题,如果我的下面的方法失败或者是异常,我仍然会使用 msg。我希望该功能在捕获期间进行回滚并将消息放回队列/主题。 public void onMessage(Message mess
我正在使用 ActiveMQ 编写应用程序,其中我使用异步 onMessage() 方法从 ActiveMQ 获取消息。 假设我从 activemq 收到 1000 条消息,因此所有消息都将存储在 O
我正在尝试实现我自己的 websocket 服务器,但在使用 JavaScript 中的 onmessage 函数时遇到了一些麻烦。就是火不起来!我将一个警报放入其中,以便在它被调用时触发,但警报永远
如何使用 JavaScript 从 WebSocket 完全读取 event.data? onMessage: function(event) { var msg = event.data; al
我正在实现 MessageListner 类的 onMessgae () 方法,但即使我将调试点放入此方法中,它也不起作用,但调试器也不会进入此方法中。 使用该方法接收来自Queue的消息。下面是我用
我正在订阅 OnMessage 事件,当用户发送消息时它会被调用两次;一旦他/她开始打字,在这种情况下 Message 对象内容如下: Body = null Chatstate = composin
在我的应用程序中,我使用了 GCM 服务。我想在 onMessage 函数中发出哔哔声或播放一个小的 mp3 文件。 我的 GCMIntentService 是从 GCMBaseIntentServi
我是一名优秀的程序员,十分优秀!