导航:首页 > 源码编译 > mqclass编译参数

mqclass编译参数

发布时间:2023-02-15 09:20:46

A. 如何在 JBoss 里配置 IBM MQ

如何在JBoss里安装、配置WebSphere MQ资源适配器:
安装WebSphere MQ资源适配器:
从安装目录复制wmq.jmsra.rar文件到服务器的部署目录中,例如:<安装路径>/server/default/deploy。此时资源适配器将会自动选择服务器。

安装WebSphere MQ扩展事务客户端:
WebSphere MQ扩展事务客户端允许你使用XA分布式事务,并用客户端模式连接到WebSphere MQ队列管理器。要将客户端安装在JBoss,需要从安装目录复制com.ibm.mqetclient.jar文件到服务器的lib目录中,例如<安装路径>/server/default/lib。

为你的应用程序配置资源适配器:
WebSphere MQ资源适配器允许你定义一些全局的属性。在JBoss中JCA出站流的资源定义在-ds.xml文件,名为wmq.jmsra-ds.xml。
此文件的概要如下:

<?xml version="1.0" encoding="UTF-8"?>
<connection-factories>
<!-- mbeans defining JCA administered objects -->
<mbean/>
<!-- JCA Connection factory definitions -->
<tx-connection-factory/>
</connection-factories>
从上可以看出JCA连接工厂的定义在<tx-connection-factory>元素,而且JMS队列和主题被定义在JCA的管理对象mbean里面。

简单的两个队列-入站和出站的完整示例如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<connection-factories>
<tx-connection-factory>
<jndi-name>jms/MyAppConnectionFactory</jndi-name>
<rar-name>wmq.jmsra.rar</rar-name>
<use-java-context>true</use-java-context>
<connection-definition>javax.jms.QueueConnectionFactory</connection-definition>
<min-pool-size>8</min-pool-size>
<max-pool-size>36</max-pool-size>
<config-property type="java.lang.String" name="channel">${channel}</config-property>
<config-property type="java.lang.String" name="hostName">${hostName}</config-property>
<config-property type="java.lang.String" name="port">1414</config-property>
<config-property type="java.lang.String" name="queueManager">${queueManager}</config-property>
<config-property type="java.lang.String" name="transportType">CLIENT</config-property>
<config-property type="java.lang.String" name="username">munish</config-property>
<security-domain-and-application>JmsXARealm</security-domain-and-application>
<xa-transaction/>
</tx-connection-factory>
<mbean name="imq.queue:name=MY.APP.INBOUND.QUEUE" code="org.jboss.resource.deployment.AdminObject" >
<attribute name="JNDIName">jms/IncomingQueue</attribute>
<depends optional-attribute-name="RARName">jboss.jca:name='wmq.jmsra.rar',service=RARDeployment</depends>
<attribute name="Type">javax.jms.Queue</attribute>
<attribute name="Properties">
baseQueueManagerName=${queueManager}
baseQueueName=MY.APP.INBOUND.QUEUE
</attribute>
</mbean>
<mbean name="imq.queue:name=MY.APP.OUTBOUND.QUEUE" code="org.jboss.resource.deployment.AdminObject">
<attribute name="JNDIName">jms/OutgoingQueue</attribute>
<depends optional-attribute-name="RARName">jboss.jca:name='wmq.jmsra.rar',service=RARDeployment</depends>
<attribute name="Type">javax.jms.Queue</attribute>
<attribute name="Properties">
baseQueueManagerName=${queueManager}
baseQueueName=MY.APP.OUTBOUND.QUEUE
</attribute>
</mbean>
</connection-factories>
在JBoss启动脚本中占位符属性被定义为:
-Dchannel=MQTEST -DhostName=localhost -DqueueManager=TST_MGR

配置入站消息传递:
消息传递配置在jboss.xml文件中,这个文件的内容会有所不同,但大致如下:
jboss.xml

<jboss xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss_5_0.xsd" version="5.0">
<enterprise-beans>
<message-driven>
<ejb-name>MyMessageBean</ejb-name>
<!-- Make sure following System properties are defined in JBoss before deploying the application -->
<activation-config>
<activation-config-property>
<activation-config-property-name>DestinationType</activation-config-property-name>
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destination</activation-config-property-name>
<activation-config-property-value>MY.APP.INBOUND.QUEUE</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>channel</activation-config-property-name>
<activation-config-property-value>${channel}</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>hostName</activation-config-property-name>
<activation-config-property-value>${hostName}</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>1414</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>queueManager</activation-config-property-name>
<activation-config-property-value>${queueManager}</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>transportType</activation-config-property-name>
<activation-config-property-value>CLIENT</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>username</activation-config-property-name>
<activation-config-property-value>munish</activation-config-property-value>
</activation-config-property>
</activation-config>
<!-- instruct the MDB to use the WebSphere MQ resource adapter -->
<resource-adapter-name>wmq.jmsra.rar</resource-adapter-name>
</message-driven>
</enterprise-beans>
</jboss>
必须指定目标类型和名称属性。其他属性都是可选的,如果省略,将使用其默认值。

一个简单的MDB定义入站消息如下所示:

/**
* This message driven bean is used to collect asynchronously received messages.
*
* @author Munish Gogna
*/
@MessageDriven(mappedName = "jms/IncomingQueue")
public final class MyMessageBean implements javax.jms.MessageListener {
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(MyMessageBean.class);
public void onMessage(final javax.jms.Message message) {
LOGGER.info("Received message: " + message);
// TODO - do processing with the message here
}
}
一个简单的java类发送消息到输出队列如下所示:

/**
* This class is used to send text messages to a queue.
*
* @author Munish Gogna
*/
public final class MessageSender {
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(MessageSender.class);
/**
* A coarse-grained method, nothing fancy. In actual applications please re factor the code and
* handle the exceptions properly.
*
* @throws Exception
*/
public void send(final String message) throws Exception {
if (message == null) {
throw new IllegalArgumentException("Parameter message cannot be null");
}
javax.jms.QueueConnection connection = null;
javax.jms.Session session = null;
try {
javax.naming.Context fContext = new javax.naming.InitialContext();
javax.jms.QueueConnectionFactory fConnectionFactory = (javax.jms.QueueConnectionFactory) fContext
.lookup("java:jms/MyAppConnectionFactory");
connection = fConnectionFactory.createQueueConnection();
session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
final javax.naming.Context jndiContext = new javax.naming.InitialContext();
final javax.jms.Destination destination = (javax.jms.Destination) jndiContext.lookup("jms/OutgoingQueue");
final javax.jms.MessageProcer messageProcer = session.createProcer(destination);
final javax.jms.TextMessage textMessage = session.createTextMessage(message);
messageProcer.send(textMessage);
messageProcer.close();
} catch (Exception nex) {
throw nex;
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
LOGGER.error("Failed to close JMS session", e);
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
LOGGER.error("Failed to close JMS connection", e);
}
}
}
}
}
最终RFHUTILC.EXE可用于连接到远程队列。

英文链接 , OSChina.NET编译

B. RabbitMQ消息过滤的一个思路

生产者 Procer 向 一个 队列发送消息,并且为消息打上不同的 Tag。假设这个队列有 3 个消费者:Consumer #[1:3],Consumer #1 只想消费 tag1 标记的消息,Consumer #2 只想消费 tag2 标记的消息,Consumer #3 只想消费 tag3 标记的消息。

生产者 publish 消息时,将 Tag 保存在 Map<String, Object> 类型的 header 字段,作为构建 AMQP.BasicProperties 参数

消费者如何告知 Broker 只消费特定 Tag?

假设 Consumer #1 只希望消费带 tag1 标记的消息,那么 Consumer #1 可以在向 Broker 请求 Basic.Consume 指令时,捎带自己期望的 Tag 字符串。Client 在具体生成 consumerTag 时可以用 Tag 关键字加上随机字符串(避免 consumerTag 重复):

消费者通过 Basic.Consume 指令来监听队列的消息,这些消费者信息服务端是如何存储的?

保存在队列主进程(Pid)的 state 中(具体调试可以通过 sys:get_state(Pid) )

并且队列进程在初始化时,会进行 consumers 初始化:

consumers 字段实际由 priority_queue:new() 初始化。当有新的 consumer 注册到队列进程,那么会调用 rabbit_queue_consumers 模块的 add_consumer 方法来向 priority_queue 添加一个元素;同理当有 consumer下线时,最终也会调用该模块的 remove_consumer 方法。 priority_queue 完整实现见 附二

Broker 向 Consumer 投递消息时,底层是通过 rabbit_amqqueue_process 调用 rabbit_queue_consumers 模块的 deliver 方法。默认采用

从 priority_queue 中获取一个 QEntry( {ChPid, Consumer} ),然后通过 FetchFun 从队列中获取消息,发送到 ChPid(Channel 进程)

在 consumers 不为空的情况下,通过 FetchFun 获取消息,此时可以获取该消息的 header,取出 Tag 值(如果消息打了 Tag 标记),然后通过 priority_queue 的 filter/2 方法

在 Pred 实现中,我们可以判断当前消息 Tag 值是否被包含在 consumerTag 中,从而可以过滤出消费特定 tag 的consumers,最后向这些 consumers 中的一个发送 Message 消息。

附一 (队列进程 state 中的 consumers 信息例子)

附二 (priority_queue 模块实现
rabbit_common )

注 :上述思路建议在测试环境测试,考虑到有可能出现的性能问题,作为一个调研也会有很多工作要做,整个过程会涉及 RabbitMQ 服务端源码改造、编译、打包( rabbitmq-public-umbrella )以及客户端的相关改造,如果能实际尝试下,也会有不小的收获。

C. linux怎么 设置 activemq jvm 内存参数

典型JVM参数设置:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
-XX:MaxPermSize=16m:设置持久代大小为16m。

D. 创建mq队列 process参数啥意思

在第一台计算机上创建的消息被传递到第二台计算机上的队列 Q1(此队列被称为远程队列)。要点: 在本教程中,您将使用创建了队列管理器 QM_APPLE 和本地队列 Q1 的机器作为接收机器。您将在发送机器上设置队列管理器和队列(远程队列定义和传输队列)。然后定义消息通道。最后,您将把测试消息放入发送机器,并从接收机器上的队列获取该消息。

E. 在windows7环境中activemq-5.1需要配置环境变量吗

方法/步骤
1、首先,右击“此电脑”,选择“属性”
2、选择“高级系统设置”
3、选择“环境变量”
4、选择“新建”
5、点击新建后,就会出现这个,变量名为“JAVA_HOME”(复制我引号内的内容就可以了,不含引号,下同),变量值,必须是自己装jdk时的路径,比如我的安装路径是E:java\jdk\,路径问题也需要注意

6、接下来找到“CLASSPATH”,没有的话就“新建”

7、变量名为“CLASSPATH”变量值“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”

8、找到Path,对其进行编辑,在其原有变量值前加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”,加的方法就是这样的C:变量值

9、记得完成后要点两个确定

10、最后,就是测试自己配置是否成功了,同时按 R+ WIN(那个windows标志的键),输入cmd

11、进入命令提示符,输入JAVA,点击“Enter”,出来这些中文,就行了

12、再输入JAVAC,点击“Enter”,出来这些中文就行了。

F. i74712mq用什么频率内存

i74712mq频率内存参数。
显卡参数
核心显卡 Intel HD Graphics 4600
显卡基本频率 0.40 GHz
显卡加速频率 1.15 GHz
内存参数
内存类型 DDR3L-1333 SO-DIMM DDR3L-1600 SO-DIMM
支持最大内存 32 GB
通道数 2
ECC 不支持

G. 2020-07-28 activeMq 两种模式的测试

activeMq有两种模式,说下个人理解

activemq 8186 管理端口 61616 默认服务端口

queue队列模式

topic 主题模式

队列模式: 生产者生成消息存入队列,消费者通过监听队列的queue消费者负责消费,且每个消息只能消费一次.

应用场景: 登陆成功,记录日志/记录状态/记录ip 等的一些列操作,可以异步执行,相对于来说不须要同步的操作,可以保证操作要求的请求不丢失

主题模式: 生产者生成消息,发布消息,订阅之后的消费者都可以读取到发布的消息,并且所有消息均可被多个消费者都消费一次

应用场景: 商城下单成功后,发送一条成功的消息,被日志系统/库存系统/物流系统 分别读取到,并做相应操作

springboot+activemq整合

1 引入pom依赖

<groupId>org.springframework.boot

    <artifactId>spring-boot-starter-activemq

    <version>1.5.20.RELEASE

    <groupId>org.messaginghub

    <artifactId>pooled-jms

    <version>1.0.4

</dependency>

2  分别编写 生产者 消费者  配置类

@Component

public class ActiveSend {

@Autowired

    private Queuequeue;

    @Autowired

    private Topictopic;

    @Autowired

    private ;

    public void sendQueue()throws JMSException {

ObjectMessage objectMessage =new ActiveMQObjectMessage();

        objectMessage.setObject("nihao");

        jmsMessagingTemplate.convertAndSend(queue,objectMessage);

    }

public void sendTopic()throws JMSException {

ObjectMessage objectMessage =new ActiveMQObjectMessage();

        objectMessage.setObject("nihao");

        jmsMessagingTemplate.convertAndSend(topic,objectMessage);

    }

}

@Component

public class ActiveListenner {

@JmsListener(destination ="active-queue")

public void reciveQueueMsg(ObjectMessage message)throws JMSException {

System.out.println("收到的消息"+message.getObject().toString());

    }

@JmsListener(destination ="active-topic")

public void reciveTopicMsg(ObjectMessage message)throws JMSException {

System.out.println("主题收到的消息"+message.getObject().toString());

    }

}

@Configuration

public class ActiveMqConfig {

@Bean

    public Queuequeue (){

return new ActiveMQQueue("active-queue");

    }

@Bean

    public Topictopic (){

return new ActiveMQTopic("active-topic");

    }

}

做一下说明,队列模式/主题模式,都是以配置类中的 关键字为判断对象,且两种模式不能共存

为了测试什么呢?

测试队列模式,是否两个消费者都消费,且均分

测试主题模式,是否消息产生后,两个消费者都消费一次

yml 配置:

spring:

jms:

# 默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置

    pub-sub-domain:false

  # activemq消息队列

  activemq:

broker-url: tcp://172.18.3.180:61616

#是否是内存模式(内置MQ,true是 false否)

    in-memory:false

    # 等待消息发送响应的时间。设置为0等待永远

    send-timeout: 0

user:'admin'

    password:'admin'

    packages:

#信任所有的包

      trust-all:true

    pool:

#是否替换默认的连接池,使用ActiveMQ的连接池需引入的依赖

      enabled:false

现在是队列模式,编写测试类测试

改变配置 将yml中的配置 pub-sub-domain:false 变为pub-sub-domain:true,开启主题模式

假如有10个监听者,那么主题模式下(topic),一个消息将被消费十次

H. 学python入门应该先学什么

零基础情况下,想学一门语言。其实python非常适合初学者入门。相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易。那么如何快速掌握python?
设定目标:做 Python 开发除了熟悉语言本身之外,还需要掌握很多相关联的技能,好比打NBA,你不光要学如何投篮,还要练习力量、技战术等一整套东西。所以,一个普通Python Web开发工程师需要掌握的技能包括至少一个Web框架,比如:Django、Flask、Tornado,做业务系统必须熟知一种数据库,还需要对Linux系统的基本操作和常用命令有所了解,因为以后你写到程序基本上都会运行在Linux平台上。
开发工具:工欲善其事必先利其器,Python IDE层出不穷,推荐Pycharm 和Sublime两个工具都是免费的,而且它们的学习成本非常低,网上找一篇教程看了基本就能上手,Vim、Emacs这样的远古神器还是放以后再去了解吧。
Python3:新手开始总纠结学 Python2 还是 Python3,这种纠结完全就是给自己徒增烦恼,因为它们是同一种语言,只有少部分地方语法不兼容,尽管目前大部分公司还在用Python2,但是Python3逐渐成为主流已是不争事实,毕竟后者性能方面更占有优势。
学习框架:对于刚入门的人,最重要的是培养Ta的学习兴趣和信心。有的会担心自己的基础知识都那么薄弱,如何能学好框架呢?其实这个担心倒是不必,大多数大型的框架都把功能封装得很完整,定义了一套在自己的框架下做事的“规则”,学习框架更多的是学习这些“规则”,入门倒不需要很深的理论基础。

I. 怎样用MQ把消息从一台机器传到另一台机器

Rabbitmq的配置文件有三个,位于/etc/rabbitmq/, 这三个文件分别是: (1)enabled_plugins, 设置允许的插件列表,该配置文档的格式为erlang的列表格式如 [rabbitmq_management,rabbitmq_visualiser]. (2)rabbitmq.conf,设置rabbitmq的运行参数。该配置文件中的每个参数为一个erlang的 tuple,结构为{Key,Value}, Key为atom类型, Value为一个term。其中几个关键参数为: tcp_listerners设置rabbimq的监听端口,默认为[5672]。 disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为 {mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte. vm_memory_high_watermark,设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。 hipe_compile 将部分rabbimq代码用High Performance Erlang compiler编译

J. RocketMq部分参数实验

实验拍摄的图片就不放了

(1)  pullBatchSize :单次从每个队列中拉取消息的条数(故单次拉取的总数为 pullBatchSize*master总数*该taopic的队列数,以本次实验为例,实验中用到的topic 在每台服务器共有16个写队列,集群共有3台master,所以单次拉取的总数约为 32X3X16=1536条),若要加大这个值则一点更要修改参数:(单次拉取消息数量),默认值为32;还可能涉及到修改:(注:若消息量过大,则可以考虑修改

:一次服务端消息拉取,消息在内存中传输允许的最大传输字 节,默认为256K

:一次服务消息端消息拉取,消息在磁盘中传输允许的最大字 节, 默认为64K

:一次消息服务端消息拉取,消息在磁盘中传输允许的最大条 数, 默认为8条)

(2)  PullInterval :两次拉取之间的间隔时间(测试中设为10s)

(3)  consumeThreadMin :最小拉取线程数

(4)  consumeThreadMax :最大拉取线程数(实验中发现,线程数并未在最小拉取线程数和最大拉取线程数之间,而是大约等于最小线程数)

(5)  consumeMessageBatchMaxSize :每次传入messageListener#consumeMessage中的消息的条数,被pullBatchSize限制,并且这些消息中要是有一条处理失败,则全部失败

阅读全文

与mqclass编译参数相关的资料

热点内容
qq小程序云服务器和 浏览:739
方舟服务器怎么玩才好玩 浏览:557
单片机的部件 浏览:621
编译原理遍的过程 浏览:252
python读取json字符串 浏览:62
ubuntu1404安装php 浏览:628
lua能编译吗 浏览:116
思仙怎么看服务器 浏览:658
php微信图片防盗链 浏览:798
安卓1怎么读音 浏览:291
农业app怎么开通快捷支付 浏览:910
pythonredisdict 浏览:385
如何攻击别人网赌服务器 浏览:880
隐私与应用加密的图案密码 浏览:38
陈情令王一博解压 浏览:39
c编译器使用说明 浏览:707
郑州前端程序员私活有风险吗 浏览:14
小型螺杆机压缩机 浏览:520
成人解压最好的方法 浏览:52
最小制冷压缩机 浏览:492