我列出了每个队列中的队列和消息.以下是我的代码.但是,QueueBrowser无法正确检索邮件.
比方说,我有一个名为TestQueue的队列,它有1000条消息.
我第一次运行我的程序时它只显示200条消息.第二 - 400第三 - 600第四 - 800第五 - 1000
你能告诉我如何解决这个问题吗?
ConnectionFactory out = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.prefetchPolicy.all=10000");
ActiveMQConnection connection = (ActiveMQConnection) out.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Set<ActiveMQQueue> amqs = connection.getDestinationSource().getQueues();
Iterator<ActiveMQQueue> queues = amqs.iterator();
while ( queues.hasNext() )
{
ActiveMQQueue queue_t = aqueues.next();
String q_name = queue_t.getPhysicalName();
List<ActiveMQMessage> msgList = ((ActiveMQSession) session).getUnconsumedMessages();
System.out.println( "\nQueue = " + q_name);
QueueBrowser queueBrowser = session.createBrowser(queue_t);
Enumeration e = queueBrowser.getEnumeration();
int numMsgs = 0;
while(e.hasMoreElements())
{
Message message = (Message) e.nextElement();
numMsgs++; …Run Code Online (Sandbox Code Playgroud) 我是Web Sphere MQ的新手.
我在AIX中创建了一个Queue Manager,Channel和Listener,如下所示:
crtmqm MY_Q_MGR
strmqm MY_Q_MGR
runmqsc
DEFINE LISTENER(MY_QM_LISTENER) TRPTYPE(TCP) PORT(5030)
DEFINE CHANNEL(MY_QM_CHANNEL) CHLTYPE(SDR) CONNAME('10.128.1.51(5030)') XMITQ('MY_Q_MGR') DISCINT(0)
Run Code Online (Sandbox Code Playgroud)
然后我检查了QMGR正在运行.我在proc中看到了听众.
然后,我尝试从java创建MQQueueManager,如下所示,我得到了 MQJE001: Completion Code '2', Reason '2059'.
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;
import com.ibm.mq.MQEnvironment;
public class MQSample {
// code identifier
static final String sccsid = "@(#) samples/wmqjava/MQSample.java, jmscc.samples, k700, k700-L080529 1.4.1.1 08/06/01 09:37:53";
// define the name of the QueueManager
private static final String qManager = "MY_Q_MGR";
// and …Run Code Online (Sandbox Code Playgroud) 我使用的是ActiveMQ 5.3.2和5.6.0.在ActiveMQ 5.3.2中,JMX的默认设置是
SUNJMX="-Dcom.sun.management.jmxremote"
Run Code Online (Sandbox Code Playgroud)
在ActiveMQ 5.6.0中,JMX的默认设置是
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
Run Code Online (Sandbox Code Playgroud)
因此,这些设置没有端口定义.你能告诉我ActiveMQ真的是用这些设置启动JMX连接吗?如果是这样,连接的默认端口是什么,因为我无法连接到1099.如果随机选择端口,如何找到ActiveMQ正在使用的端口?
谢谢.
这个问题可能无处不在,但我已经尝试了大多数答案和许可 777。但是,仍然没有运气。
/etc/apache2/sites-available/mysite.conf
<VirtualHost *:80>
ServerName www.mysite.com
ServerAdmin mymail@mail.com
DocumentRoot /var/www/html/wordpress
ErrorLog ${APACHE_LOG_DIR}/mysite_error.log
CustomLog ${APACHE_LOG_DIR}/mysite.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
/etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES
Run Code Online (Sandbox Code Playgroud)
我设置了权限777和/usr/share/wordpress。/var/lib/wordpress
当我编译下面的代码时,我得到"错误C2106:'=':左操作数必须是l-value"at"m.msg_body [i] .id = i;".当我注释掉那一行时,没有错误.我的代码出了什么问题?
static const short MSG_DATA_MAX = 10;
struct MsgBodyData
{
int id;
string value;
};
class MsgBody
{
public:
MsgBody()
{
len = 0;
}
MsgBody(MsgBody & msg_obj);
~MsgBody() {}
int length() { return len; }
void setLength(int _len) { len = _len; }
MsgBodyData operator[](short index)
{
if(index > -1 && index < MSG_DATA_MAX)
return data[index];
MsgBodyData dump_data;
return dump_data;
}
void operator=(MsgBody & msg_obj)
{
len = msg_obj.length();
for(int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我知道db-xx.log是日志文件而db.redo是参考文件?
db-xx.log存储尚未使用的消息.消费后,这些消息将从db-xx.log中删除.db.redo按消息ID存储消息的引用(存储在db-xx.log中).
我的理解是代理首先将消息存储在缓存(易失性存储器)中,然后在检查点或缓存大小已满时将这些消息移动(附加)到db-xx.log.
谢谢
我有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 ×5
ibm-mq ×2
websphere-7 ×2
c++ ×1
jms ×1
jmx ×1
kahadb ×1
lamp ×1
permissions ×1
qt-creator ×1
ubuntu-14.04 ×1
wordpress ×1