rubywmq 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +10 -0
- data/Gemfile.lock +37 -0
- data/LICENSE.txt +1 -1
- data/README.md +29 -47
- data/Rakefile +12 -76
- data/examples/each_a.rb +2 -3
- data/examples/each_b.rb +4 -5
- data/examples/each_header.rb +5 -6
- data/examples/files_to_q.rb +7 -8
- data/examples/get_a.rb +3 -5
- data/examples/get_client.rb +9 -10
- data/examples/put1_a.rb +2 -3
- data/examples/put1_b.rb +4 -7
- data/examples/put1_c.rb +6 -6
- data/examples/put_a.rb +0 -2
- data/examples/put_b.rb +5 -7
- data/examples/put_dlh.rb +11 -12
- data/examples/put_dynamic_q.rb +7 -7
- data/examples/put_group_a.rb +3 -4
- data/examples/put_group_b.rb +7 -7
- data/examples/put_rfh.rb +13 -11
- data/examples/put_rfh2_a.rb +9 -10
- data/examples/put_rfh2_b.rb +9 -9
- data/examples/put_xmit_q.rb +63 -8
- data/examples/q_to_files.rb +6 -7
- data/examples/request.rb +20 -18
- data/examples/server.rb +19 -16
- data/ext/extconf.rb +2 -1
- data/ext/extconf_client.rb +3 -3
- data/ext/generate/generate_const.rb +30 -23
- data/ext/generate/generate_reason.rb +70 -72
- data/ext/generate/generate_structs.rb +20 -19
- data/ext/generate/wmq_structs.erb +67 -67
- data/ext/wmq.c +0 -16
- data/ext/wmq.h +0 -16
- data/ext/wmq_message.c +8 -24
- data/ext/wmq_mq_load.c +5 -17
- data/ext/wmq_queue.c +73 -90
- data/ext/wmq_queue_manager.c +115 -108
- data/lib/wmq/message.rb +36 -34
- data/lib/wmq/queue_manager.rb +22 -19
- data/lib/wmq/version.rb +1 -1
- data/rubywmq.gemspec +38 -0
- data/test/queue_manager_test.rb +334 -0
- data/test/test_helper.rb +14 -0
- metadata +16 -26
- data/tests/test.rb +0 -318
data/ext/wmq_queue_manager.c
CHANGED
@@ -1,19 +1,3 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright 2006 J. Reid Morrison
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*/
|
16
|
-
|
17
1
|
#include "wmq.h"
|
18
2
|
|
19
3
|
static ID ID_open;
|
@@ -50,6 +34,7 @@ static ID ID_ssl_cipher_spec;
|
|
50
34
|
static ID ID_ssl_peer_name;
|
51
35
|
static ID ID_keep_alive_interval;
|
52
36
|
static ID ID_crypto_hardware;
|
37
|
+
static ID ID_use_system_connection_data;
|
53
38
|
|
54
39
|
/* MQSCO ID's */
|
55
40
|
static ID ID_key_repository;
|
@@ -74,26 +59,27 @@ void QueueManager_id_init(void)
|
|
74
59
|
ID_message = rb_intern("message");
|
75
60
|
|
76
61
|
/* MQCD ID's */
|
77
|
-
ID_channel_name
|
78
|
-
ID_transport_type
|
79
|
-
ID_mode_name
|
80
|
-
ID_tp_name
|
81
|
-
ID_security_exit
|
82
|
-
ID_send_exit
|
83
|
-
ID_receive_exit
|
84
|
-
ID_max_msg_length
|
85
|
-
ID_security_user_data
|
86
|
-
ID_send_user_data
|
87
|
-
ID_receive_user_data
|
88
|
-
ID_user_identifier
|
89
|
-
ID_password
|
90
|
-
ID_connection_name
|
91
|
-
ID_heartbeat_interval
|
92
|
-
ID_long_remote_user_id
|
93
|
-
ID_remote_security_id
|
94
|
-
ID_ssl_cipher_spec
|
95
|
-
ID_ssl_peer_name
|
96
|
-
ID_keep_alive_interval
|
62
|
+
ID_channel_name = rb_intern("channel_name");
|
63
|
+
ID_transport_type = rb_intern("transport_type");
|
64
|
+
ID_mode_name = rb_intern("mode_name");
|
65
|
+
ID_tp_name = rb_intern("tp_name");
|
66
|
+
ID_security_exit = rb_intern("security_exit");
|
67
|
+
ID_send_exit = rb_intern("send_exit");
|
68
|
+
ID_receive_exit = rb_intern("receive_exit");
|
69
|
+
ID_max_msg_length = rb_intern("max_msg_length");
|
70
|
+
ID_security_user_data = rb_intern("security_user_data");
|
71
|
+
ID_send_user_data = rb_intern("send_user_data");
|
72
|
+
ID_receive_user_data = rb_intern("receive_user_data");
|
73
|
+
ID_user_identifier = rb_intern("user_identifier");
|
74
|
+
ID_password = rb_intern("password");
|
75
|
+
ID_connection_name = rb_intern("connection_name");
|
76
|
+
ID_heartbeat_interval = rb_intern("heartbeat_interval");
|
77
|
+
ID_long_remote_user_id = rb_intern("long_remote_user_id");
|
78
|
+
ID_remote_security_id = rb_intern("remote_security_id");
|
79
|
+
ID_ssl_cipher_spec = rb_intern("ssl_cipher_spec");
|
80
|
+
ID_ssl_peer_name = rb_intern("ssl_peer_name");
|
81
|
+
ID_keep_alive_interval = rb_intern("keep_alive_interval");
|
82
|
+
ID_use_system_connection_data = rb_intern("use_system_connection_data");
|
97
83
|
|
98
84
|
/* MQSCO ID's */
|
99
85
|
ID_key_repository = rb_intern("key_repository");
|
@@ -243,12 +229,27 @@ VALUE QueueManager_initialize(VALUE self, VALUE hash)
|
|
243
229
|
* All Client connection parameters are ignored if connection_name is missing
|
244
230
|
*/
|
245
231
|
#ifdef MQCNO_VERSION_2
|
246
|
-
|
232
|
+
int use_system_connection_data = (rb_hash_aref(hash, ID2SYM(ID_use_system_connection_data)) == Qtrue) ? 1 : 0;
|
233
|
+
|
234
|
+
if(!NIL_P(rb_hash_aref(hash, ID2SYM(ID_connection_name))) || use_system_connection_data)
|
247
235
|
{
|
248
236
|
PMQCD pmqcd = &pqm->client_conn; /* Process MQCD */
|
249
237
|
pqm->is_client_conn = 1; /* Set to Client connection */
|
250
238
|
|
251
|
-
|
239
|
+
if(use_system_connection_data)
|
240
|
+
{
|
241
|
+
/*
|
242
|
+
* Use system defined connection data rather than explicitly providing a
|
243
|
+
* connection name. This is used with CCDT, the MQSERVER ENV var or the
|
244
|
+
* mqclient.ini file
|
245
|
+
*/
|
246
|
+
pqm->connect_options.ClientConnPtr = NULL;
|
247
|
+
}
|
248
|
+
else
|
249
|
+
{
|
250
|
+
WMQ_HASH2MQCHARS(hash,connection_name, pmqcd->ConnectionName)
|
251
|
+
}
|
252
|
+
|
252
253
|
WMQ_HASH2MQLONG (hash,transport_type, pmqcd->TransportType)
|
253
254
|
WMQ_HASH2MQCHARS(hash,mode_name, pmqcd->ModeName)
|
254
255
|
WMQ_HASH2MQCHARS(hash,tp_name, pmqcd->TpName)
|
@@ -384,7 +385,7 @@ VALUE QueueManager_initialize(VALUE self, VALUE hash)
|
|
384
385
|
*
|
385
386
|
* Throws:
|
386
387
|
* * WMQ::WMQException if comp_code != MQCC_OK
|
387
|
-
* * Except if :
|
388
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
388
389
|
* to QueueManager.new
|
389
390
|
*/
|
390
391
|
VALUE QueueManager_connect(VALUE self)
|
@@ -459,7 +460,7 @@ VALUE QueueManager_connect(VALUE self)
|
|
459
460
|
*
|
460
461
|
* Throws:
|
461
462
|
* * WMQ::WMQException if comp_code != MQCC_OK
|
462
|
-
* * Except if :
|
463
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
463
464
|
* to QueueManager.new
|
464
465
|
*/
|
465
466
|
VALUE QueueManager_disconnect(VALUE self)
|
@@ -509,7 +510,7 @@ VALUE QueueManager_disconnect(VALUE self)
|
|
509
510
|
*
|
510
511
|
* Note:
|
511
512
|
* * commit will have no effect if all put and get operations were performed
|
512
|
-
* without specifying :
|
513
|
+
* without specifying sync: true
|
513
514
|
*
|
514
515
|
* Returns:
|
515
516
|
* * true : On Success
|
@@ -520,7 +521,7 @@ VALUE QueueManager_disconnect(VALUE self)
|
|
520
521
|
*
|
521
522
|
* Throws:
|
522
523
|
* * WMQ::WMQException if comp_code != MQCC_OK
|
523
|
-
* * Except if :
|
524
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
524
525
|
* to QueueManager.new
|
525
526
|
*/
|
526
527
|
VALUE QueueManager_commit(VALUE self)
|
@@ -561,7 +562,7 @@ VALUE QueueManager_commit(VALUE self)
|
|
561
562
|
*
|
562
563
|
* Note:
|
563
564
|
* * backout will have no effect if all put and get operations were performed
|
564
|
-
* without specifying :
|
565
|
+
* without specifying sync: true
|
565
566
|
*
|
566
567
|
* Returns:
|
567
568
|
* * true : On Success
|
@@ -572,7 +573,7 @@ VALUE QueueManager_commit(VALUE self)
|
|
572
573
|
*
|
573
574
|
* Throws:
|
574
575
|
* * WMQ::WMQException if comp_code != MQCC_OK
|
575
|
-
* * Except if :
|
576
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
576
577
|
* to QueueManager.new
|
577
578
|
*/
|
578
579
|
VALUE QueueManager_backout(VALUE self)
|
@@ -611,7 +612,7 @@ VALUE QueueManager_backout(VALUE self)
|
|
611
612
|
* resource such as a Database
|
612
613
|
*
|
613
614
|
* Starts a new unit of work under which put and get can be called with
|
614
|
-
* with the parameter :
|
615
|
+
* with the parameter sync: true
|
615
616
|
*
|
616
617
|
* Returns:
|
617
618
|
* * true : On Success
|
@@ -622,7 +623,7 @@ VALUE QueueManager_backout(VALUE self)
|
|
622
623
|
*
|
623
624
|
* Throws:
|
624
625
|
* * WMQ::WMQException if comp_code != MQCC_OK
|
625
|
-
* * Except if :
|
626
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
626
627
|
* to QueueManager.new
|
627
628
|
*/
|
628
629
|
VALUE QueueManager_begin(VALUE self)
|
@@ -665,17 +666,17 @@ VALUE QueueManager_begin(VALUE self)
|
|
665
666
|
*
|
666
667
|
* Summary of parameters and their WebSphere MQ equivalents
|
667
668
|
* queue.get( # WebSphere MQ Equivalents:
|
668
|
-
*
|
669
|
-
*
|
670
|
-
*
|
671
|
-
*
|
672
|
-
*
|
673
|
-
*
|
674
|
-
*
|
675
|
-
*
|
676
|
-
*
|
677
|
-
*
|
678
|
-
*
|
669
|
+
* q_name: 'Queue Name', # MQOD.ObjectName
|
670
|
+
* q_name: { queue_manager=>'QMGR_name', # MQOD.ObjectQMgrName
|
671
|
+
* q_name =>'q_name'}
|
672
|
+
* message: my_message, # n/a : Instance of Message
|
673
|
+
* data: "Hello World", # n/a : Data to send
|
674
|
+
* sync: false, # MQGMO_SYNCPOINT
|
675
|
+
* new_id: true, # MQPMO_NEW_MSG_ID & MQPMO_NEW_CORREL_ID
|
676
|
+
* new_msg_id: true, # MQPMO_NEW_MSG_ID
|
677
|
+
* new_correl_id: true, # MQPMO_NEW_CORREL_ID
|
678
|
+
* fail_if_quiescing: true, # MQOO_FAIL_IF_QUIESCING
|
679
|
+
* options: WMQ::MQPMO_FAIL_IF_QUIESCING # MQPMO_*
|
679
680
|
* )
|
680
681
|
*
|
681
682
|
* Mandatory Parameters
|
@@ -751,7 +752,7 @@ VALUE QueueManager_begin(VALUE self)
|
|
751
752
|
*
|
752
753
|
* * :options => Fixnum (Advanced MQ Use only)
|
753
754
|
* * Numeric field containing any of the MQ Put message options or'd together
|
754
|
-
* * E.g. :
|
755
|
+
* * E.g. options: WMQ::MQPMO_PASS_IDENTITY_CONTEXT | WMQ::MQPMO_ALTERNATE_USER_AUTHORITY
|
755
756
|
* * Note: If :options is supplied, it is applied first, then the above parameters are
|
756
757
|
* applied afterwards.
|
757
758
|
* * One or more of the following values:
|
@@ -778,7 +779,7 @@ VALUE QueueManager_begin(VALUE self)
|
|
778
779
|
*
|
779
780
|
* Throws:
|
780
781
|
* * WMQ::WMQException if comp_code == MQCC_FAILED
|
781
|
-
* * Except if :
|
782
|
+
* * Except if exception_on_error: false was supplied as a parameter
|
782
783
|
* to QueueManager.new
|
783
784
|
*/
|
784
785
|
VALUE QueueManager_put(VALUE self, VALUE hash)
|
@@ -1001,9 +1002,9 @@ static VALUE QueueManager_open_queue_each(VALUE parameters)
|
|
1001
1002
|
* Example:
|
1002
1003
|
* require 'wmq/wmq_client'
|
1003
1004
|
*
|
1004
|
-
* WMQ::QueueManager.connect(:
|
1005
|
-
* qmgr.open_queue(:
|
1006
|
-
* queue.put(:
|
1005
|
+
* WMQ::QueueManager.connect(q_mgr_name: 'REID', connection_name: 'localhost(1414)') do |qmgr|
|
1006
|
+
* qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :output) do |queue|
|
1007
|
+
* queue.put(data: 'Hello World')
|
1007
1008
|
* end
|
1008
1009
|
* end
|
1009
1010
|
*/
|
@@ -1069,43 +1070,43 @@ static VALUE QueueManager_singleton_connect_ensure(VALUE self)
|
|
1069
1070
|
* * Since the number of parameters can vary dramatically, all parameters are passed by name in a hash
|
1070
1071
|
* * Summary of parameters and their WebSphere MQ equivalents:
|
1071
1072
|
* WMQ::QueueManager.connect( # WebSphere MQ Equivalents:
|
1072
|
-
* :
|
1073
|
-
* :
|
1074
|
-
* :
|
1073
|
+
* q_mgr_name: 'queue_manager name',
|
1074
|
+
* exception_on_error: true, # n/a
|
1075
|
+
* connect_options: WMQ::MQCNO_FASTBATH_BINDING # MQCNO.Options
|
1075
1076
|
*
|
1076
|
-
* :
|
1077
|
+
* trace_level: 0, # n/a
|
1077
1078
|
*
|
1078
1079
|
* # Common client connection parameters
|
1079
|
-
* :
|
1080
|
-
* :
|
1081
|
-
* :
|
1080
|
+
* channel_name: 'svrconn channel name', # MQCD.ChannelName
|
1081
|
+
* connection_name: 'localhost(1414)', # MQCD.ConnectionName
|
1082
|
+
* transport_type: WMQ::MQXPT_TCP, # MQCD.TransportType
|
1082
1083
|
*
|
1083
1084
|
* # Advanced client connections parameters
|
1084
|
-
* :
|
1085
|
-
* :
|
1086
|
-
* :
|
1087
|
-
* :
|
1088
|
-
* :
|
1089
|
-
* :
|
1090
|
-
* :
|
1091
|
-
* :
|
1092
|
-
* :
|
1093
|
-
* :
|
1094
|
-
* :
|
1095
|
-
* :
|
1096
|
-
* :
|
1097
|
-
* :
|
1098
|
-
* :
|
1099
|
-
* :
|
1100
|
-
* :
|
1085
|
+
* max_msg_length: 65535, # MQCD.MaxMsgLength
|
1086
|
+
* security_exit: 'Name of security exit', # MQCD.SecurityExit
|
1087
|
+
* send_exit: 'Name of send exit', # MQCD.SendExit
|
1088
|
+
* receive_exit: 'Name of receive exit', # MQCD.ReceiveExit
|
1089
|
+
* security_user_data: 'Security exit User data', # MQCD.SecurityUserData
|
1090
|
+
* send_user_data: 'Send exit user data', # MQCD.SendUserData
|
1091
|
+
* receive_user_data: 'Receive exit user data', # MQCD.ReceiveUserData
|
1092
|
+
* heartbeat_interval: 1, # MQCD.HeartbeatInterval
|
1093
|
+
* remote_security_id: 'Remote Security id', # MQCD.RemoteSecurityId
|
1094
|
+
* ssl_cipher_spec: 'SSL Cipher Spec', # MQCD.SSLCipherSpec
|
1095
|
+
* keep_alive_interval: -1, # MQCD.KeepAliveInterval
|
1096
|
+
* mode_name: 'LU6.2 Mode Name', # MQCD.ModeName
|
1097
|
+
* tp_name: 'LU6.2 Transaction pgm name', # MQCD.TpName
|
1098
|
+
* user_identifier: 'LU 6.2 Userid', # MQCD.UserIdentifier
|
1099
|
+
* password: 'LU6.2 Password', # MQCD.Password
|
1100
|
+
* long_remote_user_id: 'Long remote user identifier', # MQCD.LongRemoteUserId (Ptr, Length)
|
1101
|
+
* ssl_peer_name: 'SSL Peer name', # MQCD.SSLPeerName (Ptr, Length)
|
1101
1102
|
*
|
1102
1103
|
* # SSL Options
|
1103
|
-
* :
|
1104
|
-
* :
|
1104
|
+
* key_repository: '/var/mqm/qmgrs/.../key', # MQSCO.KeyRepository
|
1105
|
+
* crypto_hardware: 'GSK_ACCELERATOR_NCIPHER_NF_ON', # MQSCO.CryptoHardware
|
1105
1106
|
* )
|
1106
1107
|
*
|
1107
1108
|
* Optional Parameters
|
1108
|
-
* * :
|
1109
|
+
* * q_mgr_name: String
|
1109
1110
|
* * Name of the existing WebSphere MQ Queue Manager to connect to
|
1110
1111
|
*
|
1111
1112
|
* * Default:
|
@@ -1171,6 +1172,12 @@ static VALUE QueueManager_singleton_connect_ensure(VALUE self)
|
|
1171
1172
|
* * Default Value:
|
1172
1173
|
* WMQ::MQXPT_TCP
|
1173
1174
|
*
|
1175
|
+
* * :use_system_connection_data => Boolean
|
1176
|
+
* * Used when you want to initialise a client connection, but you want
|
1177
|
+
* * to obtain the connection_name and channel_name from one of the system
|
1178
|
+
* * configuration methods. These being: mqclient.ini file, MQSERVER ENV
|
1179
|
+
* * variable or CCDT.
|
1180
|
+
*
|
1174
1181
|
* For the Advanced Client Connection parameters, please see the WebSphere MQ documentation
|
1175
1182
|
*
|
1176
1183
|
* Note:
|
@@ -1188,13 +1195,13 @@ static VALUE QueueManager_singleton_connect_ensure(VALUE self)
|
|
1188
1195
|
* require 'wmq/wmq_client'
|
1189
1196
|
*
|
1190
1197
|
* WMQ::QueueManager.connect(
|
1191
|
-
* :
|
1192
|
-
* :
|
1193
|
-
* :
|
1194
|
-
* qmgr.open_queue(:
|
1198
|
+
* channel_name: 'SYSTEM.DEF.SVRCONN',
|
1199
|
+
* transport_type: WMQ::MQXPT_TCP,
|
1200
|
+
* connection_name: 'localhost(1414)' ) do |qmgr|
|
1201
|
+
* qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :input) do |queue|
|
1195
1202
|
*
|
1196
1203
|
* message = WMQ::Message.new
|
1197
|
-
* if queue.get(:message
|
1204
|
+
* if queue.get(message: message)
|
1198
1205
|
* puts "Data Received: #{message.data}"
|
1199
1206
|
* else
|
1200
1207
|
* puts 'No message available'
|
@@ -1325,41 +1332,41 @@ static int QueueManager_execute_each (VALUE key, VALUE value, PQUEUE_MANAGER pqm
|
|
1325
1332
|
* Example
|
1326
1333
|
* WMQ::QueueManager.connect do |qmgr|
|
1327
1334
|
* result = qmgr.execute(
|
1328
|
-
*
|
1329
|
-
* :
|
1330
|
-
* :
|
1331
|
-
* :
|
1335
|
+
* command: :inquire_q,
|
1336
|
+
* q_name: 'MY.LOCAL.QUEUE',
|
1337
|
+
* q_type: WMQ::MQQT_LOCAL,
|
1338
|
+
* current_q_depth: nil
|
1332
1339
|
* )
|
1333
1340
|
* # OR, we can replace the method name execute with the MQAI command:
|
1334
1341
|
* result = qmgr.inquire_q(
|
1335
|
-
* :
|
1336
|
-
* :
|
1337
|
-
* :
|
1342
|
+
* q_name: 'MY.LOCAL.QUEUE',
|
1343
|
+
* q_type: WMQ::MQQT_LOCAL,
|
1344
|
+
* current_q_depth: nil
|
1338
1345
|
* )
|
1339
1346
|
*
|
1340
1347
|
* Complete Example:
|
1341
1348
|
* require 'wmq/wmq'
|
1342
1349
|
* require 'wmq/wmq_const_admin'
|
1343
|
-
* WMQ::QueueManager.connect(:
|
1344
|
-
* qmgr.reset_q_stats(:
|
1350
|
+
* WMQ::QueueManager.connect(q_mgr_name: 'REID', connection_name: 'localhost(1414)') do |qmgr|
|
1351
|
+
* qmgr.reset_q_stats(q_name: '*').each {|item| p item }
|
1345
1352
|
* end
|
1346
1353
|
*
|
1347
1354
|
* Some one line examples
|
1348
|
-
* qmgr.inquire_q(:
|
1355
|
+
* qmgr.inquire_q(q_name: 'TEST*').each {|item| p item }
|
1349
1356
|
*
|
1350
|
-
* qmgr.inquire_q(:
|
1357
|
+
* qmgr.inquire_q(q_name: 'TEST*', q_type: WMQ::MQQT_LOCAL, current_q_depth: nil).each {|item| p item }
|
1351
1358
|
*
|
1352
|
-
* qmgr.inquire_process(:
|
1359
|
+
* qmgr.inquire_process(process_name:'*').each {|item| p item }
|
1353
1360
|
*
|
1354
1361
|
* qmgr.ping_q_mgr.each {|item| p item }
|
1355
1362
|
*
|
1356
1363
|
* qmgr.refresh_security.each {|item| p item }
|
1357
1364
|
*
|
1358
|
-
* qmgr.inquire_q_status(:
|
1365
|
+
* qmgr.inquire_q_status(q_name: 'TEST*', q_status_type: :q_status, q_status_attrs: :process_id).each {|item| p item }
|
1359
1366
|
*
|
1360
1367
|
* qmgr.start_channel_listener.each {|item| p item }
|
1361
1368
|
*
|
1362
|
-
* qmgr.inquire_channel_status(:
|
1369
|
+
* qmgr.inquire_channel_status(channel_name: '*').each {|item| p item }
|
1363
1370
|
*/
|
1364
1371
|
VALUE QueueManager_execute(VALUE self, VALUE hash)
|
1365
1372
|
{
|
data/lib/wmq/message.rb
CHANGED
@@ -17,45 +17,47 @@ module WMQ
|
|
17
17
|
# * The format of any header should not be supplied in the descriptor or any header
|
18
18
|
#
|
19
19
|
# Message has the following attributes:
|
20
|
+
#
|
20
21
|
# * descriptor = {
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# *
|
22
|
+
# # WebSphere MQ Equivalent
|
23
|
+
# format: WMQ::MQFMT_STRING, # MQMD.Format - Format of data only
|
24
|
+
# WMQ::MQFMT_NONE # Do not supply header formats here
|
25
|
+
# original_length: Number, # MQMD.OriginalLength
|
26
|
+
# priority: 0 .. 9, # MQMD.Priority
|
27
|
+
# put_time: String, # MQMD.PutTime
|
28
|
+
# msg_id: String, # ...
|
29
|
+
# expiry: Number,
|
30
|
+
# persistence: Number,
|
31
|
+
# reply_to_q: String,
|
32
|
+
# correl_id: String,
|
33
|
+
# feedback: Number,
|
34
|
+
# offset: Number,
|
35
|
+
# report: Number,
|
36
|
+
# msg_flags: Number,
|
37
|
+
# reply_to_q_mgr: String,
|
38
|
+
# appl_identity_data: String,
|
39
|
+
# put_appl_name: String,
|
40
|
+
# user_identifier: String,
|
41
|
+
# msg_seq_number: Number,
|
42
|
+
# appl_origin_data: String,
|
43
|
+
# accounting_token: String,
|
44
|
+
# backout_count: Number,
|
45
|
+
# coded_char_set_id: Number,
|
46
|
+
# put_appl_type: Number,
|
47
|
+
# msg_type: Number,
|
48
|
+
# group_id: String,
|
49
|
+
# put_date: String,
|
50
|
+
# encoding: Number
|
51
|
+
# }
|
52
|
+
#
|
53
|
+
# * data: String
|
54
|
+
# * headers: Array<Hash>
|
53
55
|
# * Note: Do not supply the format of any header. Ruby WMQ does this for you.
|
54
56
|
#
|
55
57
|
# The following headers are supported:
|
56
58
|
# * Rules And Formatting Header (RFH)
|
57
|
-
# :
|
58
|
-
#
|
59
|
+
# header_type: :rf_header
|
60
|
+
# ....
|
59
61
|
# * Rules and Formatting V2 Header (RFH2)
|
60
62
|
# ....
|
61
63
|
# * Dead Letter Header
|