标签: ibm-mq

Java程序使用用户ID而不是通道连接WMQ

我有这样的需求,比如用用户ID而不是通道连接MQ。

我尝试在没有chanel的情况下将用户ID和密码设置为MQEnvironment类,但出现以下异常。

com.ibm.mq.jmqi.JmqiException: CC=2;RC=2540;AMQ9520: Channel not defined remotely. [3=].
Run Code Online (Sandbox Code Playgroud)

请指导我,是否可以编写java客户端来使用用户id而不是通道连接MQ。

ibm-mq

1
推荐指数
1
解决办法
6503
查看次数

MQ8 + JDk8 的授权错误

当使用 JMS 示例代码时,放置在应用程序中,使用 MQ8 + JDk8 时出现低于授权错误

MQException received while attempting reconnect: Reason Code=2035
 Exception text: com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'.
Run Code Online (Sandbox Code Playgroud)

AMQERR01.LOG 说

AMQ8077: Entity 'clientadmin' has insufficient authority to access object
'TLSTEST.QM'.

EXPLANATION:
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: connect
ACTION:
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member …
Run Code Online (Sandbox Code Playgroud)

ibm-mq

1
推荐指数
1
解决办法
3283
查看次数

如何使用java读取MQ消息而不从队列中删除消息

当我执行下面的代码时,它将从控制台上的 MQ 读取数据,然后从队列中删除所有数据。我不希望在从 MQ 读取数据时从队列中删除我的数据。我想让它参数化,也想将数据写入excel。任何人都可以帮我解决这个问题吗?下面是我正在使用的代码。

public class MQReadJava
{
    private MQQueueManager _queueManager = null;
    public int port = 1416;
    public String hostname = "xyz";
    public String channel = "SYSTEM.ABC.123";
    public String qManager = "ABC.BAW";
    public String inputQName = "MYQUEUE";

    public MQReadJava()
    {
        super(); 
    }

    private void init(String[] args) throws IllegalArgumentException
    {
        // Set up MQ environment

        MQEnvironment.hostname = hostname;
        MQEnvironment.channel = channel;
        MQEnvironment.port = port;
    }

    public static void main(String[] args)throws IllegalArgumentException
    {
        MQReadJava readQ = new MQReadJava();
        try
        { …
Run Code Online (Sandbox Code Playgroud)

java ibm-mq

1
推荐指数
1
解决办法
2万
查看次数

无需用户身份验证的 SpringBoot IBM MQ

目前,我的 Spring Boot application.yaml 中有以下属性。

ibm:
   mq:
      queueManager: <queue-manager>
      channel: <channel>
      connName: <host>(<port>)
      queue: <queue-name>
      user: <user>
      password: <password>
Run Code Online (Sandbox Code Playgroud)

我想在没有密码的情况下进行连接,为此我必须设置jmsConnectionFactory.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false);属性。

无论如何,我可以通过将参数传递给 connName 在 application.yaml 中指定此属性吗?

在哪里可以找到与 IBM MQ 相关的所有预定义的关键 spring-boot 应用程序属性?

jms spring-boot ibm-mq

1
推荐指数
1
解决办法
4640
查看次数

使用带有 spring-boot 的共享 JmsTransactionManager 在没有 XA 的情况下在同一代理上读取/写入消息

我有一个 spring-boot 服务,可以读取和写入同一个 IBM MQ 消息代理。该进程是独立的,不在应用程序容器内运行。我想实现“共享事务资源”模式,这样我就不需要配置任何 JTA/XA 事务管理。我的工作顺利,但是以下边缘情况不会回滚消息发布。读取已回滚,但发布仍已提交。

假设MessageListener 收到一条消息

并且使用相同的 JMS ConnectionFactory 将消息发布到另一个队列

消息发布后onMessage() 抛出异常

然后消息会回滚到 READ 队列,不会发布到 WRITE 队列

我的代码看起来像这样......

@Component
public class MyJmsReceiver implements MessageListener
{
    @Autowired MyJmsSender myJmsSender;
    
    @Override
    public void onMessage(Message message)
    {
        myJmsSender.sendMessage("some-payload");
        
        if(true) throw new RuntimeException("BOOM!");
    }
}


@Component
public class MyJmsSender
{
    @Transactional(propagation = Propagation.MANDATORY)
    public void sendMessage(final String payload)
    {
        jmsTemplate.convertAndSend("QUEUE.OUT", payload);
    }
}


@Configuration
@EnableJms
@EnableTransactionManagement
public class Config
{
    @Bean
    public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory)
    { …
Run Code Online (Sandbox Code Playgroud)

spring-transactions spring-boot ibm-mq

1
推荐指数
1
解决办法
4210
查看次数

IBM MQ 身份验证和授权

根据我目前的理解,所有客户端连接都在两个级别进行身份验证,通道级别和队列管理器级别,

在队列管理器级别,它使用对象CONNAUTH的属性值来确定如何完成身份验证(例如:使用主机操作系统用户存储库),如果对象指定,则它使用结构中包含的用户 ID作为用户应用程序上下文的 id,它用于授权,或者如果存在,则运行客户端应用程序的用户 id 用作应用程序上下文的用户 id,并且该用户 id 用于授权。QMGRAUTHINFOAUTHINFOADOPTCTX(YES)MQCSPADOPTCTX(NO)

在渠道级别,不执行任何与授权相关的操作。仅按照配置进行身份验证。为了更精细的访问控制,一组通道验证记录被应用于通道。CONNAUTH属性的值QMGR仍用于确定要进行身份验证的用户存储库。

问题:

  1. 到目前为止我的说法正确吗?(非常感谢更正/解释。)
  2. 通道对象的 MCAUSER 属性有什么作用?其目的是什么?为什么消息通道代理在哪个用户下运行很重要?
  3. 毕竟,通道级身份验证实际上如何与 MCAUSER 配合使用?
  4. 这两个验证过程按什么顺序完成?是否先进行通道认证?

authentication messaging authorization ibm-mq

1
推荐指数
1
解决办法
2691
查看次数

WebSphere MQ MessageListener(类似于JMS消息侦听器)

我有MQConsumerClass,它从队列中检索消息,如下所示.

while (running)
{
    try
    {
        MQMessage rcvMessage = new MQMessage();
        MQGetMessageOptions gmo = new MQGetMessageOptions();

        gmo.options = MQConstants.MQGMO_WAIT;
        gmo.waitInterval = 60000; 
        queue.get(rcvMessage, gmo);

        if(rcvMessage.getTotalMessageLength() > 0)
        {
            String msgText = rcvMessage.readUTF();
        }
    }
    catch blocks{}
}
Run Code Online (Sandbox Code Playgroud)

但问题是当队列中没有消息时,会抛出2033异常.

我认为2033 NO_MSG_AVAILABLE异常不是严重的异常,可能会停止操作.

但是,我想onMessage(Message msg)在队列中有新消息时调用函数.

我想用MessageListener创建这个类,但我找不到MessageListener或任何与之相关的示例.

所以,请告诉我WMQ Java API中是否有任何MessageListener函数.

要么

任何方式这样做?

java websphere-7 ibm-mq

0
推荐指数
1
解决办法
8904
查看次数

为何使用传输队列

为什么我们使用传输队列来存储消息在向远程队列发送消息,因为我们也可以将消息存储在本地队列中.因此,创建传输队列会占用内存和空间.

ibm-mq

0
推荐指数
1
解决办法
1084
查看次数

如何使用MQ Client连接到MQ Server QUEUE MANAGER

我尝试使用MQ Client将消息发送到MQ Server

错误是: - 发生了WebSphere MQ错误:完成代码2原因代码2058.我知道这个原因代码,因为错误的队列管理器名称..但队列管理器名称是正确的...

安装WebSphere MQ Client之后,我只运行命令:SET MQSERVER = QM_ORANGE/TCP/IPADDRESS(PORT NUMBER)

并运行此程序公共类MQSample {

  // code identifier
  static final String sccsid = "@(#) MQMBID sn=p750-002-131001_DE su=_FswqMCqGEeOZ3ui-rZDONA pn=MQJavaSamples/wmqjava/MQSample.java";

  // define the name of the QueueManager
  private static final String qManager = "QM_ORANGE";
  // and define the name of the Queue
  private static final String qName = "Q1";

  /**
   * Main entry point
   * 
   * @param args - command line arguments (ignored)
   */
  public static void main(String args[]) {
    try …
Run Code Online (Sandbox Code Playgroud)

mq ibm-mq

0
推荐指数
1
解决办法
2717
查看次数

MQ:已达到通道的最大实例数

我有一个连接到MQ的Java客户端,队列管理器抱怨The maximum number of instances, 50, of channel 'CHAN' was reached

在哪里以及如何在客户端代码或属性中找到由Java客户端创建的实例数?

java spring jms ibm-mq

0
推荐指数
1
解决办法
134
查看次数