Browsing the queue with the Java command line tools shows the text of the
message.  

JMS_HEADER_FIELD:JMSDestination = lyceum
JMS_BODY_FIELD:JMSText = w00t!
JMS_HEADER_FIELD:JMSCorrelationID = abc
JMS_HEADER_FIELD:JMSDeliveryMode = non-persistent
JMS_HEADER_FIELD:JMSMessageID = caf84815-428d-485b-b783-4b61174658aa:1:2:1
JMS_HEADER_FIELD:JMSExpiration = 0
JMS_HEADER_FIELD:JMSPriority = 0
JMS_HEADER_FIELD:JMSRedelivered = false
JMS_HEADER_FIELD:JMSTimestamp = 1168872791402

I commented out the Event Handler association and used what is otherwise the
exact same code to push a message in, used the java browse.bat tool and the
above is what I see - as you may have noticed, the text of the message is
present.  


James.Strachan wrote:
> 
> I'm not sure I understand why this is happening; I wonder if you tried
> another client (either the web console or a Java consumer), do you get
> the text of the message ok?
> 
> On 1/12/07, Kyle Hodgson <[EMAIL PROTECTED]> wrote:
>>
>> I'm writing a simple windows form app that a) sends a message b) has an
>> event
>> handler for receiving that message and c) can check a queue for any
>> messages
>> that are yet un-handled.
>>
>> For some reason, the event handler is firing the event onMessage(), but
>> the
>> text of the incoming message is lost.
>>
>>     Public Sub sendOne()
>>         producer = session.CreateProducer(destination)
>>         producer.Persistent = True
>>
>>         Dim message As ActiveMQTextMessage
>>         message = session.CreateTextMessage("w00t!")
>>         message.NMSCorrelationID = "abc"
>>         producer.Send(message)
>>
>>     End Sub
>>
>> (Works, and when I run this through the debugger I can see the text of
>> the
>> message no problem with a breakpoint at the producer.Send line - so the
>> text
>> has not been lost yet.)
>>
>>     Sub New(ByVal arg1 As Form1)
>>
>>         mainform = arg1
>>         factory = New ConnectionFactory(New
>> Uri("tcp://10.78.78.1:61636"))
>>         connection = factory.CreateConnection()
>>         session = connection.CreateSession()
>>         destination = session.GetQueue("lyceum")
>>         consumer = session.CreateConsumer(destination)
>>
>>         AddHandler consumer.Listener, AddressOf gotOne
>>         mainform.setStatus("listener added.")
>>
>>     End Sub
>>
>> This successfully adds an event handler gotOne to my class.
>>
>>     Private Sub gotOne(ByVal message As NMS.IMessage)
>>         Dim amqMessage As ActiveMQTextMessage
>>         amqMessage = CType(message, ActiveMQTextMessage)
>>         mainform.setStatus("Got one.")
>>         mainform.setMessages("begin" + amqMessage.Text + "end")
>>     End Sub
>>
>> gotOne works - I can see the "Got one." message and I see the "begin"
>> when a
>> message comes in.  But the original message is gone (debugger shows the
>> contents of amqMessage.Text as "") and for some odd reason the word "end"
>> does not show up.  I put begin and end there just in case there were tab
>> or
>> space characters I wasn't seeing.  I've tried amqMessage.toString, which
>> did
>> show me lots of information about the message, but the text of the
>> message
>> was still not present.  I was suspecting that it's the conversion from
>> IMessage to ActiveMQTextMessage but I have other code examples that seem
>> to
>> indicate that I've done that correctly.
>>
>> Any ideas?
>>
>> The only weird thing about our setup I can think of is that I had to
>> import
>> the Visual Studio 2005 source code of the .NET client available on this
>> site
>> to Visual Studio 2003 to make it usable in our projects.  But I've
>> successfully used these DLL's in other projects, and the above behavior
>> did
>> not exhibit itself.
>>
>> Here's the full source code:
>>
>> Imports ActiveMQ
>> Imports NMS
>> Imports ActiveMQ.Commands
>>
>> Public Class Form1
>>     Inherits System.Windows.Forms.Form
>>
>> #Region " Windows Form Designer generated code "
>>
>>     Dim L As Object
>>
>>     Public Sub New()
>>         MyBase.New()
>>
>>         'This call is required by the Windows Form Designer.
>>         InitializeComponent()
>>
>>         'Add any initialization after the InitializeComponent() call
>>
>>     End Sub
>>
>>     'Form overrides dispose to clean up the component list.
>>     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
>>         If disposing Then
>>             If Not (components Is Nothing) Then
>>                 components.Dispose()
>>             End If
>>         End If
>>         MyBase.Dispose(disposing)
>>     End Sub
>>
>>     'Required by the Windows Form Designer
>>     Private components As System.ComponentModel.IContainer
>>
>>     'NOTE: The following procedure is required by the Windows Form
>> Designer
>>     'It can be modified using the Windows Form Designer.
>>     'Do not modify it using the code editor.
>>     Friend WithEvents lbStatus As System.Windows.Forms.ListBox
>>     Friend WithEvents lbMessages As System.Windows.Forms.ListBox
>>     Friend WithEvents Button1 As System.Windows.Forms.Button
>>     Friend WithEvents Button2 As System.Windows.Forms.Button
>>     <System.Diagnostics.DebuggerStepThrough()> Private Sub
>> InitializeComponent()
>>         Me.lbStatus = New System.Windows.Forms.ListBox
>>         Me.lbMessages = New System.Windows.Forms.ListBox
>>         Me.Button1 = New System.Windows.Forms.Button
>>         Me.Button2 = New System.Windows.Forms.Button
>>         Me.SuspendLayout()
>>         '
>>         'lbStatus
>>         '
>>         Me.lbStatus.Location = New System.Drawing.Point(0, 8)
>>         Me.lbStatus.Name = "lbStatus"
>>         Me.lbStatus.Size = New System.Drawing.Size(656, 173)
>>         Me.lbStatus.TabIndex = 0
>>         '
>>         'lbMessages
>>         '
>>         Me.lbMessages.HorizontalScrollbar = True
>>         Me.lbMessages.Location = New System.Drawing.Point(0, 184)
>>         Me.lbMessages.Name = "lbMessages"
>>         Me.lbMessages.Size = New System.Drawing.Size(656, 329)
>>         Me.lbMessages.TabIndex = 1
>>         '
>>         'Button1
>>         '
>>         Me.Button1.Location = New System.Drawing.Point(688, 48)
>>         Me.Button1.Name = "Button1"
>>         Me.Button1.TabIndex = 2
>>         Me.Button1.Text = "DeQueue"
>>         '
>>         'Button2
>>         '
>>         Me.Button2.Location = New System.Drawing.Point(688, 88)
>>         Me.Button2.Name = "Button2"
>>         Me.Button2.TabIndex = 3
>>         Me.Button2.Text = "Send One"
>>         '
>>         'Form1
>>         '
>>         Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
>>         Me.ClientSize = New System.Drawing.Size(800, 517)
>>         Me.Controls.Add(Me.Button2)
>>         Me.Controls.Add(Me.Button1)
>>         Me.Controls.Add(Me.lbMessages)
>>         Me.Controls.Add(Me.lbStatus)
>>         Me.Name = "Form1"
>>         Me.Text = "Form1"
>>         Me.ResumeLayout(False)
>>
>>     End Sub
>>
>> #End Region
>>
>>
>>
>>     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
>> System.EventArgs) Handles MyBase.Load
>>
>>         setStatus("Initialized.")
>>
>>         L = New ML(Me)
>>
>>     End Sub
>>
>>
>>     Sub setStatus(ByVal message As String)
>>
>>         If lbStatus.Items.Count = 100 Then lbStatus.Items.RemoveAt(99)
>>         lbStatus.Items.Insert(0, Now & " " & message)
>>
>>     End Sub
>>
>>     Sub setMessages(ByVal message As String)
>>
>>         If lbMessages.Items.Count = 100 Then
>> lbMessages.Items.RemoveAt(99)
>>         lbMessages.Items.Insert(0, Now & " " & message)
>>
>>     End Sub
>>
>>     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
>> System.EventArgs) Handles Button1.Click
>>
>>         L.goGetEm()
>>
>>     End Sub
>>
>>     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
>> System.EventArgs) Handles Button2.Click
>>         L.sendOne()
>>     End Sub
>> End Class
>>
>> Imports ActiveMQ
>> Imports ActiveMQ.Commands
>> Imports NMS
>> Imports System
>>
>> Public Class ML
>>
>>     Dim factory As IConnectionFactory
>>     Dim connection As IConnection
>>     Dim session As ISession
>>     Dim destination As IDestination
>>     Dim listener As MessageListener
>>     Dim mainform As Form1
>>     Dim consumer As IMessageConsumer
>>     Dim producer As IMessageProducer
>>     Sub New(ByVal arg1 As Form1)
>>
>>         mainform = arg1
>>         factory = New ConnectionFactory(New
>> Uri("tcp://10.78.78.1:61636"))
>>         connection = factory.CreateConnection()
>>         session = connection.CreateSession()
>>         destination = session.GetQueue("lyceum")
>>         consumer = session.CreateConsumer(destination)
>>
>>         AddHandler consumer.Listener, AddressOf gotOne
>>         mainform.setStatus("listener added.")
>>
>>     End Sub
>>
>>     Public Sub sendOne()
>>         producer = session.CreateProducer(destination)
>>         producer.Persistent = True
>>
>>         Dim message As ActiveMQTextMessage
>>         message = session.CreateTextMessage("w00t!")
>>         message.NMSCorrelationID = "abc"
>>         producer.Send(message)
>>
>>     End Sub
>>
>>     Private Sub gotOne(ByVal message As NMS.IMessage)
>>         Dim amqMessage As ActiveMQTextMessage
>>         amqMessage = CType(message, ActiveMQTextMessage)
>>         mainform.setStatus("Got one.")
>>         mainform.setMessages("begin" + amqMessage.Text + "end")
>>     End Sub
>>
>>     Public Sub goGetEm()
>>         '// lets consume a message
>>         'ActiveMQTextMessage message = (ActiveMQTextMessage)
>> consumer.Receive();
>>         'if (message == null)
>>         '{
>>         'Console.WriteLine("No message received!");
>>         '}
>>         'Else
>>         '{
>>         'Console.WriteLine("Received message with ID:   " +
>> message.NMSMessageId);
>>         'Console.WriteLine("Received message with text: " +
>> message.Text);
>>         '}
>>         Dim message = New ActiveMQTextMessage
>>         message = Me.consumer.Receive
>>         If message Is Nothing Then
>>             mainform.setStatus("No message waiting.")
>>         Else
>>             mainform.setMessages(message.text)
>>             Dim fileWriter As New System.IO.StreamWriter("c:\file.txt")
>>             fileWriter.Write(message.text)
>>             fileWriter.Close()
>>         End If
>>
>>
>>     End Sub
>> End Class
>>
>> --
>> View this message in context:
>> http://www.nabble.com/What-am-I-missing-...-tf2968575.html#a8307110
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> 
> James
> -------
> http://radio.weblogs.com/0112098/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/What-am-I-missing-...-tf2968575.html#a8374547
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to