Multiple identical external components connecting to one openfire server

http://www.igniterealtime.org/issues/browse/JM-1217 seems to say that the openfire server will return some explanation in the xml stream of a connecting component how to connect multiple identical components. We don’t see that.

We use external components to pass messages from our proprietary queueing system off to the jabber server, several thousand per second.

We start multiple identical components to handle pulling items from the queue and pushing them through to the appropriate JID.

In our current ejabberd configuration this is not a problem, and we’d like to evaluate openfire for use in the same capacity.

Does anyone have any clues on connecting multiple identically identified external components to openfire?

We chased this down with the help of the amazing Chet Murthee and Joseph Latone of IBM Watson. They followed the backtraces from failed components back through the openfire source to find:

LocalComponentSession.java:

public static LocalComponentSession createSession(String serverName, XmlPullParser xpp, Connection connection)

throws XmlPullParserException {

String domain = xpp.getAttributeValue("", “to”);

Boolean allowMultiple = xpp.getAttributeValue("", “allowMultiple”) != null;

Therefore, if your connecting components don’t send the allowMultiple stanza (not XEP-0114 http://www.xmpp.org/extensions/xep-0114.html) they will fail.

We patched our components connection stanza building code to add an allowMultiple=‘true’ to the stream packet. It works just fine now.

Jeremy

See my last post in this discussion

can you supply the patch you made so it can be included as a fix in future builds?