我们正在开发IBM WebSphere MQ应用程序,我们使用JMS API来操作消息.但是我们遇到的问题是连接需要花费太多时间,而且我们想要集中JMS连接,因为它是一个独立的应用程序,我们没有应用程序容器来提供JNDI或池服务.那么有解决方案吗?对于JDBC,我们可以使用DBCP或c3p0来归档池化数据源,在JMS中,是否有任何类似的项目可以池化JMS连接?
我正在处理一个独立的MQ JMS应用程序,我们的应用程序需要"知道"客户端已经消耗了消息生成器放在队列中.因为客户端应用程序不对我们负责.所以我们不能让他们写一些像"msg.acknowledge();"的东西.他们身边的事情(msg.acknowledge()在我的条件下不是正确的方法.)我在stackoverflow中搜索历史答案.找到以下内容与我想要的完全相同:
我的问题是,有没有其他方法可以在MQ API或JMS API中存档它?我只需要在msg产生端进行编码,它可以是队列或主题.
另一个问题是在JMS中的确认模式CLIENT_ACKNOWLEDGE,是否产生无关紧要?我一直认为这种模式可以在调用send()方法时阻塞应用程序,直到客户端使用消息并调用msg.acknowledge(),但似乎不是这样.产品在传递消息后退出应用程序,消息只存储在队列中,直到客户端调用acknowledge().是否可以让生产者应用程序挂起来等到客户端确认消息?
如果我的概念不对,请纠正我,谢谢.
这是我的情况.
bash ~]# TIME="2012-05-25 06:42:57"
bash ~]# echo "2012-05-25 00:16:51,610" | awk -v var=$TIME '{if ($0 < var) print $0}'
Run Code Online (Sandbox Code Playgroud)
然后,这是错误消息
awk: 06:42:57
awk: ^ syntax error
Run Code Online (Sandbox Code Playgroud)
我只想将日期范围传递给我的awk命令.如何存档?请帮忙.谢谢.
修改案例
START_TIME="2012-05-24 00:00:00"
END_TIME="2012-05-24 01:00:00"
echo "2012-05-24 00:10:10" | awk -v "START=$START_TIME" -v "END=$END_TIME" '{ if ( $0 > START && $0 < END) print $0 }'
Run Code Online (Sandbox Code Playgroud)
它似乎不适用于IF条件.
awk: { if ( $0 < START && $0 > END) print $0 }
awk: ^ syntax error
Run Code Online (Sandbox Code Playgroud)
echo "2012-05-24 00:10:10" | awk …Run Code Online (Sandbox Code Playgroud)