Sha256: f4218c2011940432c4ed3c0750b5c22096d7fbe85fda32867aa0663d72a25003

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

#
# Sample : put() : Put multiple Messages to a queue under the same group Id
#          Open the queue so that multiple puts can be performed
#          Ensure that all messages have the same group id
#          Allow MQ to create the unique group id and let it automatically
#          assign message sequence numbers for each message in the group
#
require 'wmq'

# Put 5 messages in a single group onto the queue
total = 5

WMQ::QueueManager.connect(q_mgr_name: 'REID') do |qmgr|
  qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :output) do |queue|
    message = WMQ::Message.new
    total.times do |count|
      message.data = "Hello:#{count}"

      # Set the message flag to indicate message is in a group
      # On the last message, set the last message flag
      message.descriptor[:msg_flags] = (count < total-1) ? WMQ::MQMF_MSG_IN_GROUP : WMQ::MQMF_LAST_MSG_IN_GROUP

      # new_id => true causes subsequent messages to have unique message and
      # correlation id's. Otherwise all messages will have the same message and
      # correlation id's since the same message object is being
      # re-used for all put calls.
      #
      # By setting the put :options => WMQ::MQPMO_LOGICAL_ORDER then MQ will supply a unique Group Id
      # and MQ will automatically set the message sequence number for us.
      queue.put(message: message, new_id: true, options: WMQ::MQPMO_LOGICAL_ORDER)
      p message.descriptor
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
ferocia-rubywmq-2.1.1 examples/put_group_a.rb
rubywmq-2.1.1 examples/put_group_a.rb
rubywmq-2.1.0 examples/put_group_a.rb