Mule用于发送JMS消息(端点)的类是什么

时间:2013-08-29 14:40:38

标签: java jms activemq mule

我正在尝试使用现有的Mule代码发送消息。已经制作了一些代码,但出于某种原因,据我所知,有一个轴“bug”。

使用JMSEndpoint然后调用“call”方法发送消息并等待响应。这是我的代码:

        String payload = eventContext.getMessage().getPayloadAsString();
        JmsConnector amqConnector = (JmsConnector) eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");
        JMSVendorAdapter adapter = JMSVendorAdapterFactory.getJMSVendorAdapter();
        QueueConnector connector = new QueueConnector(amqConnector.getConnectionFactory(), 1, 1, 2000, 2000, 60000, true, null, null, null, adapter, null);

        Connection connection = connector.getConnectionFactory().createConnection();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("ExampleQueue");
        JMSEndpoint endpoint = connector.createEndpoint(queue);
        connector.start();

//      Byte byteMessage = new Byte(payload);
//      BytesMessage mess = session.createBytesMessage();
//      mess.writeByte(byteMessage);

        byte[] response = endpoint.call(payload.getBytes("UTF-8"), 10000);

        return response.toString();

该方法本身要求一个byte []所以我给它一个带有UTF-8字符集的byte []。 但它抛出了这个错误:

org.apache.axis.transport.jms.InvokeException: Error: unexpected message type received - expected BytesMessage

在JMSConnector类中,它在此块中失败:

BytesMessage response = null;
                try {
                    response = (BytesMessage)subscriber.receive(timeout);
                } catch (ClassCastException cce) {
                    throw new InvokeException
                            ("Error: unexpected message type received - expected BytesMessage");
                }

关于这个问题有一张打开的票,他们称这是一个“虫子”???所以它有点抛出ClassCastException!简直不敢相信这已经发了!有办法解决这个问题吗???那么骡子怎么做呢?

如何实现将JMS消息发送到队列中,就像Mule在其组件中一样?

感谢。

1 个答案:

答案 0 :(得分:2)

Mule使用org.mule.transport.jms.JmsMessageDispatcher

将消息调度到JMS目标