我目前有一个骆驼路线设置从一个activemq主题中获取一些东西,通过一个.xsl传递它来转换它,然后将它传递给另一个activemq主题。我现在唯一的问题是我不确定如何真正开始将 xml 文件发布到队列中以启动整个过程。
我曾想过以字符串形式发送整个内容,但我不确定 xsl 文件是否会接收到它来转换它。如果有人有任何将 xml 文件发送到 activemq 队列或主题的提示或方法,我们将不胜感激!
谢谢!
我目前有一个骆驼路线设置从一个activemq主题中获取一些东西,通过一个.xsl传递它来转换它,然后将它传递给另一个activemq主题。我现在唯一的问题是我不确定如何真正开始将 xml 文件发布到队列中以启动整个过程。
我曾想过以字符串形式发送整个内容,但我不确定 xsl 文件是否会接收到它来转换它。如果有人有任何将 xml 文件发送到 activemq 队列或主题的提示或方法,我们将不胜感激!
谢谢!
1) ActiveMQ 带有一个 Web 控制台,您可以在其中将消息发送到队列或主题。默认情况下,此控制台在
http://localhost:8161/admin
ActiveMQ 发行版中有一个 WebConsole 自述文件,其中提供了更多详细信息。
2) 您也可以从 JConsole 发送消息(例如 JMX)。
3)替代方法是使用骆驼路线,从文件目录消费并发送到主题。然后您可以将文件放到目录中,让 Camel 拾取并发送文件。
<route>
<from uri="file:somedir/inbox"/>
<to uri="activemq:topic:someTopicName"/>
</route>
请参考以下代码。 在这里,我们将收到消息简单文件创建,然后写入来自 BytesMessageObject 的字节,直到 EOF 发生。 BytesMessage bm = (BytesMessage)topicSubscriber.receiveNoWait(); // 接收(1000); System.out.println("bm-->"+bm); 如果(BM!=空){ 文件 file = new File("D:/jms/myfie.txt"); //创建的文件 FileOutputStream fos = new FileOutputStream(file);//创建文件输出流 BufferedOutputStream outBuf = new BufferedOutputStream(fos);//创建缓冲区输出流 诠释我; while((i=bm.readInt())!=-1)//读取unitil EOF表示-1 { outBuf.write(i);//写入文件 } System.out.println("outBuf-->"+outBuf); System.out.println(file.isFile()); outBuf.close();//关闭输出缓冲区 fos.close();//关闭文件输出流 } 然后在这里打开文件 写在 BytesMessageObject 中。 跨队列发送 发件人代码: File f=new File("D:/Import.txt");//获取文件句柄 System.out.println("是文件"+f.isFile()); BytesMessage bm = topicSession.createBytesMessage();//创建字节消息 InputStream in= new FileInputStream(f);//用文件句柄创建输入流 BufferedInputStream inBuf= new BufferedInputStream(in);//创建缓冲区输入流 诠释我; while((i=inBuf.read())!=-1)//读取文件直到到达EOF(-1){ bm.writeInt(i);//写入字节消息 } System.out.println("之后"); //添加一个eof bm.writeInt(-1);//在字节消息中添加EOF System.out.println("BM = "+bm); topicPublisher.send(bm);///发送字节消息 System.out.println("发送成功"); topicConnection.stop();//停止连接