websphere family.
MQ,MB,WAS,Portal
Features of MQ:
1) message delivery
2) Asynchronus messaging
3) Time dependent
4) Integrity
5) Support
Plat form independent
we can send messages from one os to other os.
A -------- B
solaris windows
TCP/IP SPNX
we can write our own code in any language.
JMS Supports Java language.
MQ is a s/w which is developed on java. but it supports all other languages.
it runs on eclipse palat form.
MQ version
dspmqver
ver 7.0 eclipse 3.3
ver 6.0
ver 5.2
ver 5.1
.
.
.
server
client
client with XA enabled. used for commit and roll back transactions.
Default 4MB info including header.
max 100MB info
300MB segmentation is required.
QM is like our weblogic domain
it contains all queues.
runs on a listener. default 1414 unless you define a port.
Queue types:
Remote Queue
Local Queue
Transmission Queue
Dead letter Queue
Alias Queue
Cluster Queue
Local Queue -- where you store all the messages.
Remote Queue -- Contains All the parameters of definations
It will not store any messages but it will send the messages to local Queue.
Sender recvr -- names should be same
surconn -- We use surconn to send the message from the application to MQ.
client A -------> server B
surconn
Below parameters are required to connect to the client
Qname
servername
port
protocol
#dspmqver ( it will display MQ version)
command not found ( MQ is not installed)
Before installation you Make sure that the below dir are exist
/opt/mqm ( all the binaries generated from installation)
/var/mqm ( all the configurations and log file )
Before installing MQ Execute licence file
cd /opt/mqm
./mqlicence.sh
check whether mqm user exist or not
more /etc/passwd | grep mqm
++++++++
#group mqm
mqm unixadms wheel
#pkgadd -d /home/melletit (used to install any s/w in solaris)
execute steps 1,2,3
select below options for MQ installation
1) MQ server
2) Man
3) sample programs
4) mq client
5) IBM jre
6) extended Architecture
enter : 1,3,5,6
cd /opt/mqm
ls -lrt
cd /var/mqm
ls -lrt
#crtmqm QM.DEMO ( create Queue Manager)
#dspmq ( It displays QM status )
#dltmq testqmgr ( delete QM)
#strmqm QM.DEMO ( Start Queue manager )
#dspmq ( displays QM status)
#cd /var/mqm
#more mqm.ini ( Contain all the configuration details of QM )
#cd /var/mqm/errors ( Contains installation error logs)
.FDC ( Contains network issues )
$ffstsummary
The tool ffstsummary is also useful – it produces a summary of FFST reports in the current directory, sorted into time order. This can be a good place to start to see the errors reported in your errors directory.
For example:
[dalelane@dlane ~]$ cd /var/mqm/errors
[dalelane@dlane errors]$ ffstsummary
AMQ21433.0.FDC 2007/04/10 10:05:45 amqzdmaa 21433 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21429.0.FDC 2007/04/10 10:05:45 amqzmur0 21429 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21469.0.FDC 2007/04/10 10:05:45 runmqlsr 21469 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21422.0.FDC 2007/04/10 10:05:45 amqzfuma 21422 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21424.0.FDC 2007/04/10 10:05:45 amqzmuc0 21424 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21431.0.FDC 2007/04/10 10:05:45 amqrrmfa 21431 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21449.0.FDC 2007/04/10 10:05:45 amqzlaa0 21449 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21434.0.FDC 2007/04/10 10:05:45 amqzmgr0 21434 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21452.0.FDC 2007/04/10 10:05:45 runmqchi 21452 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
AMQ21417.0.FDC 2007/04/10 10:05:45 amqzxma0 21417 4 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK
[dalelane@dlane errors]$
#cd /var/mqm/qmgrs/QM!DEMO
more qm.ini ( Contains all the details of particular QM - log, Services, service components)
logfile types
1) circular logs -- Info cant be retrived. It will overwrite previous logs.
2) linear logs -- Will keep on appending the log file. ( use for production )
based on criticality of message we will decide the log types.
logpath = /var/mqm/log/QM!DEMO
cd /var/mqm/log/QM!DEMO/errors -- give the errors to the particular QM.
cd /var/mqm/log/QM!DEMO/active -- we can check QM is active or not. Some times due to pending message QM goes into inactive state.
#runmqsc ( used to run mq commands )
There are two ways to configure the objects in MQ
1) command line
2) console
#runmqsc QM.DEMO
AMQ8426: Valid MQSC commands are:
ALTER
CLEAR
DEFINE
DELETE
DISPLAY
END
PING
REFRESH
RESET
RESOLVE
RESUME
START
STOP
SUSPEND
Application QM.DEMO QM.DEMO1 Application
RQ ( DEMO.REMOTE) LQ (LQ.DEMO1)
TX -- local Queue but usage -- transmission Recv chl
Sender channel
Create Remote Q:
define QREMOTE(DEMO.REMOTE)
alter qremote(DEMO.REMOTE) RNAME(LQ.DEMO1) RQNAME(QM.DEMO1) XMITQ(XQ.DEMO)
Create Local Q:
define qlocal(XQ.DEMO)
alter qlocal(XQ.DEMO) usage(XMITQ)
define channel(DEMO.DEMO1) chltype(SDR) trptype(TCP) connname('localhost(1415)') xmitq(XQ.DEMO)
end
creating 2nd QM
crtmqm QM.DEMO1
start QM.DEMO1
dspmq ( check mq stauts)
ps -ef | grep QM.DEMO1
**it will not show any listener.
dis listener(*)
System.default.listener.TCP
alter listener (System.default.listener.TCP) trptype(TCP) port(1415)
start listener(System.default.listener.TCP)
ps -ef | grep QM.DEMO1
*** 1415 listener
create local Queue:
define qlocal(LQ.DEMO1)
define channel(DEMO.DEMO1) chtype(RCVR) trptype(TCP)
dis channel(*) chltype(SDR)
start channel(DEMO.DEMO1)
dis chstatus(DEMO.DEMO1)
end
find . -name "amqsput"
$cd /opt/mqm/samp/bin
$./amqsput DEMO.REMOTE QM.DEMO
hi welcome to PavanBlog
$./amsget LQ.DEMO1 QM.DEMO1
hi welcome to PavanBlog
Trouble shooting & Interview questions:
***************************************
1) What is Remote Queue? and Remote Queue parameters
2) Reasons for message is going to retain state.
1) Not able to get the connection
2) Input parameter for remote queue might be wrong ( parameter)
3) Destination QM is not running
4) Sender and REcv channel names should be same ( might be wrong some time)
5) Message will be in local queue
6) Problem with message format
xmit Queue properties-> put : allowed
get : allowed
Local Queue -> usage : Transmission becomes Transmission Queue.
Dead letter Queue (DLQ)
***********************
1.IF destination is not defined or unavailable then message without loss it will store in DLQ .
each queue manager (QM ) will have one DLQ .it is mandatory or suggested to have DLQ .
QM.DEMO QM.DEMO1
|->DLQ1
|->DLQ
RQ LQ
TX Receiver channel.
SC (sender channel)
Before sender channel started message seats with or stores in TX .
once connection established it will reached the receiver channel and look for destination queue .
if that moment it will not able to find the destination queue it will store the message in DLQ1(which is with Qmgr )
mqm@ /home/mqm
dspmq
dis qmgr (dispaly all the queue manager properties)
define qlocal(DLQ)
alter qmgr DEADQ(DLQ)
dis qmgr
dspmq
runmqsc QM.DEMO1
define qlocal(DLQ)
alter qmgr DEADQ(DLQ)
dspmq
runmqsc QM.DEMO
dis qremote(*)
dis qlocal(DLQ)
display
dis queue(DEMO.REMOTE)
alter qremote(DEMO.REMOTE) RNAME(LQ.DEMO)
channel --> start manually .
amqsput DEMO.REMOTE QM.DEMO
cd /opt/mqm
cd sampl/bin/
./amqsput DEMO.REMOTE QM.DEMO
Hai Test msg
runmqsc QM.DEMO
dis queue(XQ.DEMO)
CURDEPTH: properties of the queue * tell the pending message count .
./amqsbcg DEMO.REMOTE XQ.DEMO (browse the message )
runmqsc QM.DEMO
dis channel(*) chltype(sdr)
CHANNEL (DEMO.DEMO1)
Start CHANNEL (DEMO.DEMO1)
dis chstatus(DEMO.DEMO1)
rummqsc
./amqsbcg DLQ QM.DEMO1
cd /var/mqm/qmrs/QM\!DEMO1/errors/
deadletter handler :program will helps in retriveing the message from dlq to destination queue.
if destination queue is fulled then receiver channel drop the msg into DLQ .
input count : no .of threads connection to local queue to put the msg . (put )
output count : get
always check mq logs .
if message flow is not happening then check following points;
1. MQ logs.
2. destination properties
3. channel is active ...
4. application security issue ......(proxy)
end .....
Dead letter Queue (DLQ)
***********************
1.IF destination is not defined or unavailable then message without loss it will store in DLQ .
each queue manager (QM ) will have one DLQ .it is mandatory or suggested to have DLQ .
QM.DEMO QM.DEMO1
|->DLQ1
|->DLQ
RQ LQ
TX Receiver channel.
SC (sender channel)
Before sender channel started message seats with or stores in TX .
once connection established it will reached the receiver channel and look for destination queue .
if that moment it will not able to find the destination queue it will store the message in DLQ1(which is with Qmgr )
mqm@ /home/mqm
dspmq
dis qmgr (dispaly all the queue manager properties)
define qlocal(DLQ)
alter qmgr DEADQ(DLQ)
dis qmgr
dspmq
runmqsc QM.DEMO1
define qlocal(DLQ)
alter qmgr DEADQ(DLQ)
dspmq
runmqsc QM.DEMO
dis qremote(*)
dis qlocal(DLQ)
display
dis queue(DEMO.REMOTE)
alter qremote(DEMO.REMOTE) RNAME(LQ.DEMO)
channel --> start manually .
amqsput DEMO.REMOTE QM.DEMO
cd /opt/mqm
cd sampl/bin/
./amqsput DEMO.REMOTE QM.DEMO
Hai Test msg
runmqsc QM.DEMO
dis queue(XQ.DEMO)
CURDEPTH: properties of the queue * tell the pending message count .
./amqsbcg DEMO.REMOTE XQ.DEMO (browse the message )
runmqsc QM.DEMO
dis channel(*) chltype(sdr)
CHANNEL (DEMO.DEMO1)
Start CHANNEL (DEMO.DEMO1)
dis chstatus(DEMO.DEMO1)
rummqsc
./amqsbcg DLQ QM.DEMO1
cd /var/mqm/qmrs/QM\!DEMO1/errors/
deadletter handler :program will helps in retriveing the message from dlq to destination queue.
if destination queue is fulled then receiver channel drop the msg into DLQ .
input count : no .of threads connection to local queue to put the msg . (put )
output count : get
always check mq logs .
if message flow is not happening then check following points;
1. MQ logs.
2. destination properties
3. channel is active ...
4. application security issue ......(proxy)
end .....
what is OSB?
OSB is a shared domain and used for transformation and routing like Message Broker in Websphere.
OSB requires Weblogic.
MB requires MQ.
$runmqsc QM.DEMO
dis channel(*) chtype(snd) ( it will display All channels)
Xmit Q->Trigger control : on
Trigger type : first
full
depth
depth : 1
data : ALSB.TO.EC -> channel
Init Q : SYSTEM.CHANNEL.INIT Q
dis qlocal(XQ.DEMO)
alter qlocal(XQ.DEMO) TRIGDATA(DEMO.DEMO1) INITQ(SYSTEM.CHANNEL.INITQ)
SYSTEM.CHANNEL.INITQ : Is default for QM.
Putting some msg into remote Q:
_______________________________
cd /opt/mqm/samp/bin
./amqsput DEMO.REMOTE QM.DEMO
type some text here
runmqsc QM.DEMO (run queue manager)
dis chstatus(DEMO.DEMO1)
./amqsget DLQ QM.DEMO1
** Triggering can start any process ( Ex: star channel)
Queue ->
-> Advanced
-> channel
-> new - sender channel
server channel
Cluster--Full repository -- All running object info
Partial repository -- Only info of objects to which it communicating
server ---------> client
conn channel
(application)------> (MQ server)
Ex: OSB or TUX application -----> (MQ server)
Conn channel
server--conn channel
--> General
--> Extended ----> Max msg length = (should be more than 4MB)
hearbeat = 300
max instances = 999999999
max instance per client = 999999999
message compression =
Keep alive.Auto =
MCA : Message Channel Agent ---> UserID : MQALSB
-->Exist-> Security exit name: BlockIP(Block Exit)
user data : FN = /var/mqm/exist641/ALSB.txt
ALSB.txt file : Contains user details . Those users can only alter the QM using server channel.
-->SSL -- Used for security purpose and some certificates have been installed.
Cipher Text : /#A&sjfsjslf08j)+/jllljjj
./amgsbcg DLQ12 QM.DEMO1
Error: reason 2085
mqrc 2085 ( It will display error details )
endmqm QM.DEMO1 (stop QM)
IMP Error numbers:
-----------------
mqrc 2085
2085 0x00000825 MQRC_UNKNOWN_OBJECT_NAME
mqrc 2058
2058 0x0000080a MQRC_Q_MGR_NAME_ERROR
mqrc 2059
2059 0x0000080b MQRC_Q_MGR_NOT_AVAILABLE
mqrc 2035
2035 0x000007f3 MQRC_NOT_AUTHORIZED
mqrc 2033
2033 0x000007f1 MQRC_NO_MSG_AVAILABLE
mqrc 2038
2038 0x000007f6 MQRC_NOT_OPEN_FOR_INQUIRE
mqrc 2039
2039 0x000007f7 MQRC_NOT_OPEN_FOR_OUTPUT
mqrc 2016
2016 0x000007e0 MQRC_GET_INHIBITED
binding concept:
/bea/osb103/scripts/jmsadm.scp
binding files : ex: .bindings
binding file contails Queue info in osb
like connection factory, Jndi info , etc.