Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-6256

Camel xmpp dynamic router is not sending incoming messages to openfire upon first failed groupchatroom join

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.10.3
    • 2.16.4, 2.17.1, 2.18.0
    • camel-xmpp
    • camel xmpp routing with openfire xmpp server. Used groupchat configurations

    • Moderate

    Description

      Reference : http://camel.465427.n5.nabble.com/Camel-xmpp-dynamic-router-is-not-connecting-to-openfire-td5730506.html#a5730537

       
      <camel:route id="eventSubscriber">
                              <camel:from uri="ref:eventReceiverUri" />
                               <camel:dynamicRouter>                  
                          <camel:method ref="eventRouterBean" method="processEvent"/>
                      </camel:dynamicRouter>
                      </camel:route> 
      

      In eventRouterBean's processEvent method, we are building xmpp groupchat room url depending upon the message and forwading the same message into respective groupchatrooms.
      If resulting groupchat room is not existing, it will log message
      WARN 2013-04-05 17:55:48,190 (UnitOfWorkProcessor.java processAsync:162) - Caught unhandled exception while processing ExchangeId: ID-INGBTCPIC8NB038-63130-1365164745141-0-3
      org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[xmpp://<ip>:5222/?password=******&resource=zone_4fc100e4-d004-4a0b-a7e2-7cf910585af6_51&room=zone_4fc100e4-d004-4a0b-a7e2-7cf910585af6_51%40conference.test.com&serviceName=ispf.com&user=messagepublisher%40test.com]. Reason: not-allowed(405)
      at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395)
      at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:278)
      at org.apache.camel.processor.RoutingSlip.processExchange(RoutingSlip.java:280)
      at org.apache.camel.processor.RoutingSlip.doRoutingSlip(RoutingSlip.java:205)
      at org.apache.camel.processor.RoutingSlip.process(RoutingSlip.java:135)
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
      at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
      at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
      at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
      and ......
      Caused by: not-allowed(405)
      at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:501)
      at org.apache.camel.component.xmpp.XmppGroupChatProducer.doStart(XmppGroupChatProducer.java:84)
      at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
      at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
      at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:393)
      ... 40 more

      This is still fine.
      But issue is if I create a groupchat room in openfire, it should forward new incoming message to same groupchat room. But it is not forwarding.
      It is keep on logging error message as 'Not connected to the server' repeatedly for all messages.

      But if I restart the camel context, then it starts working.
      Looks like it is caching url and its connection as not allowed in dynamic router.
      What will be the solution?
      And even the exception is thowing at ProducerCache.doGetProducer()..
      So how to clear cache for failed connections?

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            pshetty.kateel Prakash Shetty
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: