sábado, 16 de novembro de 2013

Comandos Message Broker

Olá Pessoal

Como eu sei que muitas pessoas assim como eu fica todo momento procurando na net esses comandos de Broker, resolvi criar uma vasta lista contendo muitos comandos utilizados pelos desenvolvedores.

Como já sabemos, o MQ funciona juntamente com o Broker, então coloquei também os comandos dele.

Boa diversão !!


Comandos Queue Manager


Criar um Queue Manager
crtmqm <QUEUE_MANAGER_NAME>

Iniciar um Queue Manager
strmqm <QUEUE_MANAGER_NAME>

Parar um Queue Manager
endmqm -i <QUEUE_MANAGER_NAME>

Excluir um Queue Manager
dltmqm <QUEUE_MANAGER_NAME>

Definindo as configurações do Queue Manager usando runmqsc

Abrir console mqsc para o Queue Manager
runmqsc <QUEUE_MANAGER_NAME> --> Pressione Enter

Listar Filas Locais:
display QLOCAL(*)
dis QLOCAL(*)
dsp QLOCAL(*)


Listar filas remotas:
display QREMOTE(*)

Criar uma fila local no Queue Manager:
DEFINE QLOCAL(QUEUE_NAME)

Criar uma fila local no Queue Manager substituindo o valor padrão maxdepth por exemplo:
DEFINE QLOCAL(QUEUE_NAME) MAXDEPTH(100000)

Criar um canal de conexão:
DEFILE CHANNEL(CHANNEL_NAME) CHLTYPE(SVRCONN) TRPTYPE(TCP)

Para visualizar a lista de filas locais criadas no Queue Manager:
runmqsc QUEUE_MANAGER_NAME -> Press ENTER
dis QLOCAL(*)
end

Pode se usar 'dis', 'display' ou 'dsp'. 'end' é usado para sair do configuração do queue Manager



Comandos WebSphere Message Broker



Para visualizar componentes (Broker, Configuration Manager e Queue Manager associados com o Broker):
mqsilist

Para visualizar os componentes de um Broker específico:
mqsilist BROKER_NAME

Para Visualizar as aplicações rodando em um determinado Execution Group:
mqsilist BROKER_NAME -e EXECUTION_GROUP_NAME

Para visualizar as propiedades Execution Group:
mqsireportproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ObjectName -n PropertyName

Para visualizar todas as propriedades Execution Group [Sendo: '-r' indica busca recursiva, e '-a' indica busca não recursiva]:
mqsireportproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o AllReportableEntityNames -r

Para visualizar todas as propriedades de configuração do Broker [Sendo: '-r' indica busca recursiva, e '-a' indica busca não recursiva]:
mqsireportproperties BROKER_NAME -c AllTypes -o AllReportableEntityNames -r

Para visualizar o tamnaho da Max Heap de um Execution Group:
mqsireportproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmMaxHeapSize

Para visualizar o tamnaho da Min Heap de um Execution Group:
mqsireportproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmMinHeapSize

Para visualizar a porta de debug do Execution Group:
mqsireportproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmDebugPort

Para alterar as Propriedades de Configuração do Broker [Sendo: '-r' indica busca recursiva, e '-a' indica busca não recursiva]:
mqsichangeproperties BROKER_NAME -c ConfigurablePropertyName -o ObjectName -v NewValue

Para alterar o tamanho da Max Heap de um Execution Group [Sendo: '-v' parâmetro deve ser em Bytes]:
mqsichangeproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmMaxHeapSize -v NewValue

Para alterar o tamanho da Min Heap de um Execution Group [Sendo: '-v' parâmetro deve ser em Bytes]:
mqsichangeproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmMinHeapSize -v NewValue

Para alterar a porta de Debug de um Execution Group [Sendo: '-v' parâmetro deve ter 4 digitos]:
mqsichangeproperties BROKER_NAME -e EXECUTION_GROUP_NAME -o ComIbmJVMManager -n jvmDebugPort -v NewValue

Trace

Comandos para Trace: ['-u' indica 'User Trace' e '-t' indica 'Service Trace']:
valores de -l (Trace Level) parâmetros:
1. normal
2. nenhum
3. debug

Values de -m (Mode) parâmetros:
1. seguro
2. rapido

User Trace:

Para visualizar o user trace: [Opcional '-f' para visualizar o trace level de um Message Flow particular Deployado no Execution Group]:
mqsireporttrace BROKER_NAME -u -e EXECUTION_GROUP_NAME -f MESSAGE_FLOW_NAME

Para Alterar o user trace: [Opcional '-f' para visualizar o trace level de um Message Flow particular Deployado no Execution Group]:
mqsichangetrace BROKER_NAME -u -e EXECUTION_GROUP_NAME -f MESSAGE_FLOW_NAME -l TRACE_LEVEL -c SIZE_OF_TRACE_IN_KB

Service Trace:

Para visualizar o service trace: [Opcional '-f' para visualizar o trace level de um Message Flow particular Deployado no Execution Group]:
mqsireporttrace BROKER_NAME -t -e EXECUTION_GROUP_NAME -f MESSAGE_FLOW_NAME

Para alterar o service trace: [Opcional '-f' para visualizar o trace level de um Message Flow particular Deployado no Execution Group]:
mqsichangetrace BROKER_NAME -t -e EXECUTION_GROUP_NAME -f MESSAGE_FLOW_NAME -l TRACE_LEVEL -c SIZE_OF_TRACE

Para ler o trace file: [Opcional '-f' para visualizar o trace level de um Message Flow particular Deployado no Execution Group]:
mqsireadlog BROKER_NAME -u/-t -e EXECUTION_GROUP_NAME -f MESSAGE_FLOW_NAME -o PATH_TO_FILE_WITH_NAME_AND_EXTENSION

Monitoring:

Habilita a monitoração para todas as aplicações deployadas no executionGroup passado como parametro
mqsichangeflowmonitoring BROKER_NAME -e EXECUTION_GROUP_NAME -j -c <active|inactive>

Habilita a monitoração para cada aplicação deployadas no executionGroup passado como parâmetro
mqsichangeflowmonitoring BROKER_NAME -c <active|inactive> -e EXECUTION_GROUP_NAME -k APPLICATION_NAME -j



Para criar um BAR:
mqsicreatebar -data PATH_TO_BAR_DIRECTORY -b BAR_FILE_NAME -p PROJECT_NAME -o NAME_OF_THE_RESOURCE_TO_BE_ADDED_WITH_EXTN


Para cancelar todas as implantações em circulação:
mqsideploy -n PATH_TO_CONFIGURATION_MANAGER_FILE -c

Para Deployar um arquivo BAR:
mqsideploy -n PATH_TO_CONFIGURATION_MANAGER_FILE -b BROKER_NAME -e EXECUTION_GROUP_NAME -a PATH_TO_BAR_FILE_NAME

Para remover um fluxo ou recurso de um Execution Group:
mqsideploy -n PATH_TO_CONFIGURATION_MANAGER_FILE -b BROKER_NAME -e EXECUTION_GROUP_NAME -d FLOW_OR_RESOURCE_NAME_TO_BE_UNDEPLOYED

NOTA:
Um parâmetro '-w' adicional pode ser adicionado ao final do comando para definir um valor de tempo limite (em segundos).

Para um reload/restart para um determinado Execution Group:
mqsireload BROKER_NAME -e EXECUTION_GROUP_NAME

Para um reload/restart Para todos os Execution Group do Broker: [Esta comando não restarta o Broker]:
mqsireload BROKER_NAME

Para Parar o  Broker: [Opcional '-i' Força o Broker a parar imediatamente:
mqsistop BROKER_NAME

Para para um Message Flow rodando em um Execution Group:
mqsistopmsgflow BROKER_NAME -e EXECUTION_GROUP_NAME -m MESSAGE_FLOW_NAME

Para Iniciar o Broker:
mqsistart BROKER_NAME


Para iniciar um  Message Flow em um Execution Group:
mqsistartmsgflow BROKER_NAME -e EXECUTION_GROUP_NAME -m MESSAGE_FLOW_NAME

Para definir o nome DSN para um Broker que será utilizado pelos fluxos Deployados em seu Execution Group:
mqsisetdbparms BROKER_NAME -n DSN_NAME -u USER_ID -p PASSWORD

Para resetar o nome DSN:
mqsisetdbparms BROKER_NAME -n DSN_NAME - -u USER_ID -p PASSWORD

Para remover o nome DSN:
mqsisetdbparms BROKER_NAME -n DSN_NAME -d

Para Listar ACL:
mqsilistaclentry CONFIGURATION_MANAGER_NAME -n .configmgr_FILE_NAME -f FILE_TO_WHICH_THE_ACL_ENTRIES_ARE_EXPORTED

Para criar um  ACL:
mqsilistaclentry CONFIGURATION_MANAGER_NAME -n .configmgr_FILE_NAME -f FILE_FROM_WHICH_THE_ACL_ENTRIES_ARE_IMPORTED

Para deletar ACL:
mqsideleteaclentry CONFIGURATION_MANAGER_NAME -n .configmgr_FILE_NAME -f FILE_FROM_WHICH_THE_ACL_ENTRIES_ARE_IMPORTED

Para criar um Broker:
mqsicreatebroker BROKER_NAME -i USER_ID -a PASSWORD -q BROKER_QUEUE_MANAGER_NAME

Para criar um Configuration Manager:
mqsicreateconfigmgr CONFIGURATION_MANAGER_NAME -i USER_ID -a PASSWORD -q BROKER_QUEUE_MANAGER_NAME

Para criar um User Name Server: [Opcional '-r' Refresh no command com valor em segundos. Valor padrão é de 60 segundos]:
mqsicreateusernameserver -i USER_ID -a PASSWORD -q BROKER_QUEUE_MANAGER_NAME

Para deletar um Broker:
mqsideletebroker BROKER_NAME

Para deletar um Configuration Manager:
mqsideleteconfigmgr CONFIGURATION_MANAGER_NAME

Para deletar um User Name Server: 
mqsideleteusernameserver

Para criar um Configurable Service:
mqsicreateconfigurableservice BROKER_NAME -c CONFIGURABLE_SERVICE_NAME -o ObjectName -n PropertyName -v PropertyValue

Para deletar um Configurable Service:
mqsideleteconfigurableservice BROKER_NAME -c CONFIGURABLE_SERVICE_NAME -o ObjectName

Para visualizar a Performance:
mqsicvp COMPONENT_NAME
COMPONENT_NAME can be BROKER_NAME or CONFIGURATION_MANAGER_NAME]

Habilitar o Global Cache
mqsichangebroker BROKER_NAME -b default

Visualizar as configurações do Global Cache
mqsireportproperties BROKER_NAME -b cachemanager -o CacheManager -r

ODBC:
Comando para configurar o usuário e passwork para o ODBC DataSource
mqsisetdbparms BROKER_NAME -n DATA_SOURCE_NAME -u <user> -p <password>

Testar a conexão do Broker com o banco via datasource/ODBC
mqsicvp <brokerName> -n <datasourceName>


quinta-feira, 14 de novembro de 2013

Conhecendo Nodes: MQInput

Oi Pessoal.

Como primeiro assunto do Blog, procurei abordar um node muito utilizado no dia-a-dia do desenvolvedor Broker, o MQInput.

Antes de começar vamos entender primeiramente o que é a comunicação WebSphere MQ (MQ):

Os produtos WebSphere providenciam comunicação entre programas através da interligação entre componentes heterogêneos, processadores, sistemas operativos, subsistemas e protocolos de comunicação. Trata-se de uma plataforma de integração e infraestrutura de aplicações da IBM. 

O WebSphere MQ permite ao utilizador trocar informação facilmente por diferentes plataformas, integrando aplicações novas com as já existentes. Assegura a entrega fiável de mensagens, incluindo documentos XML e mensagens SOAP. Opcionalmente pode trocar mensagens em grupo usando filas transacionais ou fazer segmentação de mensagens.

Para Saber mais sobre o produto consulte o site do fabricante, http://www.ibm.com/developerworks/websphere/zones/businessintegration/wmq.html

Agora que sabemos um pouco mais do Mundo MQ vamos direto no que interessa, como usar esse famoso node.

Node






Conhecendo os Terminais


O Node MQInput possui 3 terminais:

Failure, Out e Catch.

Failure: Ao entrar uma mensagem pelo node de MQInput a mensagem tende a percorrer todo fluxo criado,  Se esta ação falhar, a mensagem é reenviada novamente. Se a contagem de devolução é ultrapassado (como definido pelo atributo *BackoutThreshold da fila de entrada), a mensagem sairá pelo node de falha (failure).

Você pode conectar os nós para este terminal para lidar com esta condição. Se você não tiver conectado o terminal de falha, a mensagem é escrita para a fila de devolução, conhecida como Backout.

*usa esse atributo para determinar quantas vezes para permitir que a mensagem seja desistiu antes de transferir a mensagem para a fila especificada pelo atributo BackoutRequeueQName.

Out: Esse terminal é o famoso "happyPath", caso a mensagem venha por esse terminal, significa que sua mensagem foi capturada com sucesso, e seguirá para o próximo node.

Catch: Se alguma exceção ter sido lançada mais adiante no fluxo de mensagem, a mensagem será encaminhada para o terminal Catch. Se você não tiver conectado o terminal em algum node, a mensagem circula continuamente através do nó até que o problema seja resolvido.

Principais Propriedades do Node


Description - Fica as descrições básicas do node como Nome e Descrição breve do node.

Basic - Queue Name (Onde fica declarado o nome da fila que o processo broker vai "escutar"), ou seja toda mensagem que cair nessa fila, será consumida pelo processo.

Input Message Parsing - Propriedades da mensagem de entrada:

Message Domain: São os domínios de mensagem que podem ser recebidas.
  • MRM
  • XMLNSC
  • DataObject
  • XMLNS
  • JMSMap
  • JMSStream
  • MIME
  • BLOB
  • XML (this domain is deprecated; use XMLNSC)
  • IDOC (this domain is deprecated; use MRM)

Message Model: MessageSet, falaremos isso em post posteriores.

Advanced - Transaction Mode, define se as mensagens são recebidas no ponto de sincronização:

Se você definir a propriedade como Automático, a mensagem é recebida no ponto de sincronismo , se a mensagem recebida é marcado como persistente , caso contrário, não é recebido no ponto de sincronização. Qualquer mensagem que é enviada mais tarde por um nó de saída é colocado sob ponto de sincronização , conforme determinado pela propriedade persistência de entrada, a menos que o nó de saída tem substituído essa propriedade explicitamente .

Se você definir a propriedade como Sim (padrão), a mensagem é recebida sob ponto de sincronização , ou seja, dentro de uma unidade WebSphere MQ de trabalho.

Quando você inclui um nó MQInput em um fluxo de mensagens , o valor que você definir para o modo de transação define se as mensagens são recebidas no ponto de sincronização:

Se você definir a propriedade como Automático, a mensagem é recebida no ponto de sincronismo ,caso a mensagem recebida estiver marcada como persistente , caso contrário, não é recebido no ponto de sincronização. Qualquer mensagem que é enviada mais tarde por um nó de saída é colocado sob ponto de sincronização , conforme determinado pela propriedade persistência de entrada, a menos que o nó de saída tem substituído essa propriedade explicitamente .

Se você definir a propriedade como Sim (padrão), a mensagem é recebida sob ponto de sincronização , ou seja, dentro de uma unidade WebSphere MQ de trabalho. Todas as mensagens que são enviadas depois por um nó de saída na mesma instância do fluxo de mensagens são colocadas sob ponto de sincronização , a menos que o nó de saída tem substituído isso explicitamente .

Se você definir a propriedade como Não, a mensagem não é recebida no ponto de sincronização. Todas as mensagens que são enviadas depois por um nó de saída no fluxo de mensagens não são colocados sob ponto de sincronização , a menos que um nó de saída individual especificou que a mensagem deve ser colocado no ponto de sincronização.

Essas são as propriedades principais desse node, com esses ajustes já é possível receber uma mensagem MQ :)

Espero que tenham gostado. nos vemos no próximo post.





Boas Vindas

Olá Pessoal,

Sou Bruno, trabalho em uma empresa Multinacional, que desenvolvo atualmente em WebSphere Message Broker v8, Uma Ferramenta que vem sendo muito utilizada para resolver inúmeras soluções proposta por clientes.

Na empresa onde trabalho usamos o Broker para conceito de ESB (Enterprise Service Bus), termo conhecido para os amantes desenvolvedores. logo mais abordaremos sobre esse assunto.

Como muitos desenvolvedores, também tive dificuldades para o desenvolvimento, mas tive a possibilidade de realizar um curso da IBM sobre o assunto abordado nesse blog, onde consegui absorver bastante conteúdo sobre o assunto abordado.

A idéia desse Blog, é de compartilhar o conhecimento e dificuldades que eu tive e ainda tenho no desenvolvimento, podendo assim ajudar vocês que venha ter algum tipo de duvida clises ou dificuldade no desenvolvimento.

A participação de vocês será importante, trazendo idéias e sugestões que serão abordadas também.

Obrigado, Bruno.