ActiveMQ-从JMS远程主机接收时无法识别对象

我正在两台JBoss服务器上设置JMS请求答复。 在客户端中,我使用camel-jms和Fuse路由来创建呼叫。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.Speech.Recognition;

namespace klfj
{
    public partial class Form1 : Form
    {
        Speechsynthesizer synthesizer = new Speechsynthesizer();
        Choices list = new Choices();
        public Form1()
        {
            SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine();
            string[] wordList = new string[]
            {
                "hello","how are you"
            };

            list.Add(wordList);

            Grammar gr = new Grammar(new GrammarBuilder(list));
            try
            {
                recognitionEngine.RequestRecognizerupdate();
                recognitionEngine.LoadGrammar(gr);
                recognitionEngine.SpeechRecognized += recognitionEngine_SpeechRecognized;
                recognitionEngine.SetInputToDefaultAudioDevice();
                recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
            } catch
            {
                return;
            }

            synthesizer.SelectVoiceByHints(VoiceGender.Female);
            synthesizer.Speak("Starting Engine");

            InitializeComponent();
        }
        public void say(String h)
        {
            synthesizer.Speak(h);
        }

        private void recognitionEngine_SpeechRecognized(object sender,SpeechRecognizedEventArgs e)
        {
            String r = e.Result.Text;

            if(r == "hello")
            {
                say("Hi");
            }
        }
    }
}

基本上,它将创建临时队列并发送到服务器。 在服务器中,我创建了.setExchangePattern(ExchangePattern.InOut) .to(camelContext.getEndpoint(JMS_BEANID,JmsQueueEndpoint.class)) 的实现以侦听消息。

从调试视图MessageListener返回message.getJMSReplyTo()的实例。但是,当我尝试检查activeMQTemporaryQueue时,它将返回message.getJMSReplyTo() instanceof activeMQTemporaryQueue。我尝试自己创建false,支票会按预期返回activeMQTemporaryQueue,例如:

true

客户端和服务器位于两个不同的Maven项目中(两次战争,部署在不同的服务器上,相同的工作区)。

我不知道发生了什么。你有什么建议吗?

qq2290279 回答:ActiveMQ-从JMS远程主机接收时无法识别对象

我的猜测是这是某种类加载问题,但是很难用您提供的信息来分辨。

也就是说,我强烈建议您在代码中不要使用任何实现对象(即ActiveMQTemporaryQueue)。如果您想要做的只是请求/答复,那么绝对不需要使用任何实现对象。如果您需要知道getJMSReplyTo()返回的值是否是一个临时队列,则只需使用replyTo instanceof javax.jms.TemporaryQueue。如果您这样做,我认为您的问题将得到解决。

本文链接:https://www.f2er.com/2861607.html

大家都在问