[ 
https://issues.apache.org/activemq/browse/CAMEL-1467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50713#action_50713
 ] 

Orton Huang commented on CAMEL-1467:
------------------------------------

Hi Claus,

Good to hear from you again. Hope you're doing well

Sorry bout the confusion.

In XmppPrivateChatProducer, the method that needs to be updated is:

I added the chat.nextMessage() after the chat.sendMessage(message) (line 73) 
below:

Thanks!

------

  public void process(Exchange exchange) {
        String threadId = exchange.getExchangeId();

        try {
            ChatManager chatManager = endpoint.getConnection().getChatManager();
            Chat chat = chatManager.getThreadChat(threadId);

            if (chat == null) {
                chat = chatManager.createChat(getParticipant(), threadId, new 
MessageListener() {
                    public void processMessage(Chat chat, Message message) {
                        // not here to do conversation
                    }
                });
            }

            // TODO it would be nice if we could reuse the message from the 
exchange
            Message message = new Message();
            message.setTo(participant);
            message.setThread(threadId);
            message.setType(Message.Type.normal);

            endpoint.getBinding().populateXmppMessage(message, exchange);
            if (LOG.isDebugEnabled()) {
                LOG.debug(">>>> message: " + message.getBody());
            }

            chat.sendMessage(message);
            // receive the return message here - orton
            chat.nextMessage();
        } catch (XMPPException e) {
            throw new RuntimeXmppException(e);
        }
    }






> OutOfMemory Exception in XMPP Component
> ---------------------------------------
>
>                 Key: CAMEL-1467
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1467
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-xmpp
>         Environment: Mac OS 10.4.11, Java 1.5, Smack 3.0.4/3.1.0
>            Reporter: Orton Huang
>            Assignee: Claus Ibsen
>             Fix For: 2.0.0, 1.6.1
>
>   Original Estimate: 5 minutes
>  Remaining Estimate: 5 minutes
>
> on publishing messages lots of messages using XMPP component (layered on top 
> of Smack 3.0.4/3.1.0 client), Out of Memory Exception occurs. 
> With standard JVM settings, client runs out of memory at around 6600 messages 
> sent. With -Xmx1024M set, client runs out at ~110K messages sent.
> Appears that on a
> chat.sendMessage(message);
> The server sends the message back and the messages needs to be processed on 
> the client side or the client will continue filling its local queue until it 
> runs out of memory
> FIX:
> For XmppPrivateChatProducer and XmppGroupChatProducer, need to insert 
> chat.nextMessage() after chat.sendMessage()
>  public void process(Exchange exchange) {
>    ...
>         try {
>             chat.sendMessage(message);
>             chat.nextMessage();
>         } catch (XMPPException e) {
>             throw new RuntimeXmppException(e);
>         }
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to