使用jms:publish-subscribe-channel发布时,JMS Message body为null

时间:2017-01-18 19:00:13

标签: spring-integration spring-jms

我正在尝试在单个ActiveMQ主题上使用jms:publish-subscribe-channel到pub / sub。我能够在通道上接收来自ActiveMQ的消息,但是当我发布到通道时,消息体是空的(当另一个应用程序收听ActiveMQ主题时)。我能够使用spring-integration-samples-> basic-> jms重新创建问题。我修改了outboundChannelAdapter.xml以使用jms:publish-subscribe-channel而不是jms:outbound-channel-adapter。是否需要另一个步骤才能发布简单的字符串消息?这是我的代码更改为outboundChannelAdapter.xml:

<stream:stdin-channel-adapter id="stdin" channel="stdinToJmsoutChannel"/>

<jms:publish-subscribe-channel id="stdinToJmsoutChannel" topic="requestTopic" />    

<stream:stdout-channel-adapter id="stdout" channel="stdinToJmsoutChannel" append-newline="true"/>

1 个答案:

答案 0 :(得分:0)

我不确定你的意思是“邮件正文为空”。

我对样本进行了完全相同的更改,它对我来说很好......

using System;
using System.Windows.Forms;
using EnvDTE80;
using System.Runtime.InteropServices;

namespace TestWindowsApp
{
    static class Program
    {
        [DllImport("user32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Type type = Type.GetTypeFromProgID("VisualStudio.DTE.14.0");
            DTE2 dte = (DTE2)Activator.CreateInstance(type, true);

            dte.MainWindow.Visible = true;
            dte.UserControl = true;
            SetForegroundWindow((IntPtr)dte.MainWindow.HWnd);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

我必须在命令行中添加Please type something and hit <enter> foo foo ,因为activemq需要为类添加白名单(整个消息在jms支持的通道中被序列化)。