Notification not using Sun Message Queue?
WHen I was in the MS land, I used MSMQ and SQL Server system procedures to
deliver emails when certain events occur. Now I am in Oracle, the Sun MQ costs
$4K/CPU... Any way I could achive this without spending the money on Sun MQ?
Thanks.
- Zack
Hi,
you can write some procedure/package/trigger to call the utl_smtp package to send the email messages when an event occurs.
thanks
srinivas.
Similar Messages
-
Propagating AQ messages to Sun messaging queue
We have a business requirement to sync our application data with external application (.NET). Our approach is to use Oracle streams AQ and propagate the message to external Sun messaging queue.We are planing to write MDB for AQ messages and place this message on to Sun messaging Queue. Is there any easy approach to propagate the meesage from AQ to Sun messaging queue? I guess Oracle gateway message adapter supports only MQ series and TIBCO queues.
Thanks,
ManuSo far 50 people have viewed your posting and not replied so I'm going to throw in my two cents.
You have, in a single post devoid of version numbers, mentioned:
DOT NET
AQ
TIBCO
MQ
Sun
MDB
My impression is that you are grossly over-complicating something but having not given a business case I have no idea what that something is.
Just taking the first sentence ... please explain how one synchronizes application data with something that is a software component. That statement communicates nothing from which someone can give you any advice. -
Xletview: why not use sun's javaTV source code directly ?
xletview : one emulator for viewing MHP Xlets on a PC;
I see many difference from sun's code about the part of javaTV.
Why the author Martin Sveden need to rewrite them and not use sun's javaTV source code directly ?
Thank you for your any answer.
Sorry for my horrible english.XleView is a fine effort, but it has its limitations. I tried using it for the GunBunny demo available in the JavaME SDK 3.0 Eary Access available in
http://java.sun.com/javame/downloads/sdk30ea.jsp
and I encountered some of thost limitations. What Sveden does it several tricky manipulations in a classloader for the Xlet. In particular, he translates bytecode as he loads the Xlet's classes, changing some class names, such as changing
java.awt.Toolkit
tto
xjava.awt.Toolkit
This works up to a point. This version of Toolkit usually just turns around calls java.awt.Toolkit's corresponding routine, but he deliberately he does not implement the ubiquitous
public Image createImage(URL url)
When I downloaded his source and tried adding ths into his code, I then encountered at runtime
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:107)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
I think that this is some optimization within J2SE where they do not wait for the image to load and do the fetching in a separate thread. I do not know if there is some way to force the Sun's JVM to disable this optimization and I have not investigated furher, but I did email Svenden. I noticed that the current version of XleTView is 0.3.6 which is dated June 2004 and the web site http://www.xletview.org/ has had not news since 2005 .
I note that Svenden provides an elegant user interface but I advise you not try to learn the API's from his classes: he makes no effort to keep his implementation separate from the API standards so, for instance, his version of HScene is
package org.havi.ui;
public class HScene extends Container
implements HComponentOrdering, ImageObserver, MenuContainer, Serializable {
whereas the real standard is
public class HScene extends Container
implements HComponentOrdering {
I hate to critize such a fine effort, but it is best to keep an imlementation separate from the public API.
I agree that having a lightweight, simple and Java feature-complete Xlet viewer running would be very helpful, especially if BD-J gains much popularity. I have found trying to work with the vendor players described at
http://wiki.java.net/bin/view/Mobileandembedded/Blu-RayDiscHelloWorld
to be frustrating. I tried all four mentioned and I have gotten none of them to work for me yet. These are huge downloads and the "Intro Version" of Arcsoft pointed to at the SDK 3.0 Early Access page
http://www.arcsoft.com/products/totalmediatheatre/
just gives a "File not found" HTML page. This forum post mentions that perhaps it was recently taken down?
http://www.arcsoft.com/forum/forum_posts.asp?TID=1084
I have already emailed Michael Downs of Arcsoft since he is mentioned here:
http://wiki.java.net/bin/view/Mobileandembedded/BDJPCPlayers
What did work for me was to take Sun's JavaTV 1.1 Reference Implementation and PowerDVD's BDJ.jar and hack/fix a few classes to get GunBunny to work within the RI's RunXlet program. This is not trivial but I will will describe:
Download the JavaME 3.0 SDK EA and then download the correct version of PowerDVD that the SDK page points to:
http://www.brothersoft.com/powerdvd-download-50794.html
Download the RI binary and source of Java TV API 1.1
http://java.sun.com/javame/technology/javatv/index.jsp
Since I am too lazy to use anything but the latest 1.6 JRE as a runtime, I have to fix
com.sun.tv.media.util.MediaThread
to comment out its stop() method. This is becase stop() was deprecated and made final in J2SE 1.5
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#stop()
http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
Next, I had to mae a change to Sun's JavaTV implementation to keep the GunBunny demo happy by providing a ServiceContext. The RunXlet program calls SIEmulator, but that environment does not provide a ServiceContex, so I added one back in:
com.sun.tv.receiver.SIEmulator
private static ServiceContext svcctx = null;
Add before every call to new AppSignalEvent() and add the svcctx as the second-to-last argument:
if(svcctx == null){ try { svcctx = new com.sun.tv.ServiceContextImpl(); }catch (Exception e){ e.printStackTrace(); } }
I then had to hack a few PowerDVD classes, which is evil of me. First, I had to build an empty class by the name of
sun.util.BDJPlugin
becuase some PowerDVD class extends it but it is not in its BDJ.jar and then I had to reverse-compile (evil!) and modify one of their internal classes to avoid a dependency on their native methods. What I ended up with was a hacked version of com.cl.bdj.helper.CUtil to avoid the native methods which access the registry where they query for registry settings but also provide a default value (which I return).
com.cl.bdj.helper.CUtil
private static String pGetRegistryString(long i ,String string ,String string3) {
return string3;
private static int pGetRegistryInt(long i ,String string ,int j) {
return j;
The last thing I had to do was to change com.hdccookbook.gunbunny.BaseXlet, to use the JavaTV container rather than the org.havi one:
import javax.tv.graphics.TVContainer;
import java.awt.Container;
change
// protected HScene scene;
protected Container scene;
public final void run() {
// waitForPresenting();
// scene = HSceneFactory.getInstance().getDefaultHScene();
scene = TVContainer.getRootContainer(xletContext);
In order to having working keys, I had to add the KeyListener interface to BaseXet and
run(){
addKeyListener(this);
and then add a near duplicate of the org.dvb.event.UserEvent* stuff that is already there:
public void keyPressed(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_0:
case KeyEvent.VK_1:
case KeyEvent.VK_2:
case KeyEvent.VK_3:
case KeyEvent.VK_4:
case KeyEvent.VK_5:
case KeyEvent.VK_6:
case KeyEvent.VK_7:
case KeyEvent.VK_8:
case KeyEvent.VK_9:
numberKeyPressed(e.getKeyCode() - KeyEvent.VK_0);
break;
case KeyEvent.VK_ENTER:
enterKeyPressed();
break;
case KeyEvent.VK_LEFT:
arrowLeftKeyPressed();
break;
case KeyEvent.VK_RIGHT:
arrowRightPressed();
break;
case KeyEvent.VK_UP:
arrowUpPressed();
break;
case KeyEvent.VK_DOWN:
arrowDownPressed();
break;
public void keyReleased(KeyEvent e){
// System.out.println("Released: e="+e+" code="+e.getKeyCode());
public void keyTyped(KeyEvent e) {
// System.out.println("Typed: e="+e+" code="+e.getKeyCode());
It then comes up and functions, but the rendering is not very good. Again, this is complete hack. Running the Java TV 1.1 RI in a JRE 1.6 is not supported. If you try to run any of the other examples, you will discover that the XML parsing is broken in JRE 1.6 with this message:
Parsing failed: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequence
Exception: Invalid byte 1 of 1-byte UTF-8 sequence., file: lib\JavaTVSampleFile01.xml
and you have to go and change the lines in
lib\JavaTV.properties
from
ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
# ServiceFileHandler=SampleData_01
to
# ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
ServiceFileHandler=SampleData_01
and build samples\db\SampleData_01.java and put it in your classpath along with all these other hacks.
Nonetheless, if you want to develop a somewhat generic Xlet that uses some BD-J features, that is how you might do it. But the moment you exercise anything else in the vendor's BDJ.jar that simply doe snot work outside of their environment or invokes one of their native methods, you are again stuck.
It would be nice if Sun would at least bother to update the JavaTV RI with the fixes I hae mentioned. Their "jmflite" implementation does not render perfecly but at least it would give the programmer something to work with without having to deal with an older JRE, etc.
Andrew
Edited by: AndrewMorrow on Oct 20, 2008 2:48 AM -
Using Microsoft Message Queues (MSMQ) with LabVIEW
I want to use the Microsoft Message Queue to communicate between applications on different machines. Does anybody have experience in using the MSMQ with Labview (in the .NET framework)? How do I send messages? The MessageQueue.Send method requires an object, and I don't know how to create this object format.
This question was asked several years ago on this forum and no answer was given.
I would appreciate any examples of Create a Queue, Delete a Queue, Send a Message, and Read a Message in LabVIEW 7 or earlier.
Thanks,P.C.
I'm a little confused by what you mean. I thought you were sending messages through the MSMQ, but the code there would receive a message, get the body, then display the body of the message. The Object that the invoke node refers to is the Body of the Message, which has no properties, but has a few methods like ToString that you can use to get the string from the Body.
You need to wire up the references into the invoke and property nodes to get the selection of the methods or properties that are available. Do they just not appear when you are using the invoke node with a reference to the body?
Message Edited by Coal Man on 06-04-2007 01:56 PM
Brian Coalson
Software Engineer
National Instruments
Attachments:
msmq.Jpg 40 KB -
Sun Messaging Queue (Sun MQ) Connectivity Error - recv failed
Dear Readers
I am using following code to connect to SUN MQ Server.
I only have IP Address, Port number and username password of server. JMS Server has three brokers having their own ports.
com.sun.messaging.ConnectionFactory myConnFactory = new com.sun.messaging.ConnectionFactory();
myConnFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqBrokerHostName,"19.11.12.3");
myConnFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqBrokerHostPort,"141");
myConnFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqDefaultUsername,"ad1min");
myConnFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqDefaultPassword,"ad1min");
Connection myConn = myConnFactory.createConnection();
but when i try to run this code the exception comes given below
After then i just commented Hostname and Port section and added following to it:
myConnFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqAddressList, "mq://19.11.12.3:141");
but i got same exception with slight difference:
Exception:
+15 Feb, 2013 12:32:08 PM com.sun.messaging.jmq.jmsclient.ExceptionHandler throwConnectionException+
+Exception occurred : com.sun.messaging.jms.JMSException: [C4003]: Error occurred on connection creation [19.11.12.3:141]. - cause: java.net.SocketException: Software caused connection abort: recv failed+
+WARNING: [C4003]: Error occurred on connection creation [19.11.12.3:141]. - cause: java.net.SocketException: Software caused connection abort: recv failed+
+com.sun.messaging.jms.JMSException: [C4003]: Error occurred on connection creation [19.11.12.3:141]. - cause: java.net.SocketException: Software caused connection abort: recv failed+
at com.sun.messaging.jmq.jmsclient.ExceptionHandler.throwConnectionException(ExceptionHandler.java:274)
at com.sun.messaging.jmq.jmsclient.ExceptionHandler.handleConnectException(ExceptionHandler.java:220)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.readBrokerPorts(PortMapperClient.java:241)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.init(PortMapperClient.java:150)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.<init>(PortMapperClient.java:92)
at com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPConnectionHandler.<init>(TCPConnectionHandler.java:164)
at com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler.openConnection(TCPStreamHandler.java:135)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:778)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnectionNew(ConnectionInitiator.java:254)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:208)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:158)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.init(ProtocolHandler.java:816)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.<init>(ProtocolHandler.java:1529)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.openConnection(ConnectionImpl.java:2327)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.init(ConnectionImpl.java:1024)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.<init>(ConnectionImpl.java:418)
at com.sun.messaging.jmq.jmsclient.UnifiedConnectionImpl.<init>(UnifiedConnectionImpl.java:60)
at com.sun.messaging.BasicConnectionFactory.createConnection(BasicConnectionFactory.java:147)
at com.sun.messaging.BasicConnectionFactory.createConnection(BasicConnectionFactory.java:132)
at demo.JAMS.main(JAMS.java:31)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at com.sun.messaging.jmq.io.PortMapperTable.readLine(PortMapperTable.java:310)
at com.sun.messaging.jmq.io.PortMapperTable.read(PortMapperTable.java:266)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.readBrokerPorts(PortMapperClient.java:235)
+... 17 more+
I also used imqadmin command and tried same credentials from console but i got same error
Anyone please guide me what issue is actually?
Is this server side issue? Is this access rights issue.
Tried to google it but unable to find correct solutions>
I also used imqadmin command and tried same credentials from console but i got same errorTry using imqcmd
imqcmd query bkr -b 19.11.12.3:141
(you will be prompted for user and password)
Try running this command from your client machine and also from 19.11.12.3 (i.e. locally to the broker)
This command simply displays a few lines of info about the broker, and is a simple way to confirm that you can connect to the broker.
>
Anyone please guide me what issue is actually?
Is this server side issue? Is this access rights issue.
Tried to google it but unable to find correct solutionsCan you confirm that the broker listening on 19.11.12.3:141 has started correctly? Have you looked at the broker log? If the broker has started successfully there should be a message something like "Broker "19.11.12.3:141" ready".
Nigel -
Hi,
Thanks in advance
I am really new to webservices can any one provide me code for sending a soap object using jms using WebSphere6.1don't crosspost.
And no, noone is going to tell you how to send SOAP messages to a JMS queue (which was what you were asking elsewhere). -
Production Client Side Apps not using Sun JVM?
Just wondering if anyone here deploys a non-Sun JVM to client machines?
The impression I get is that everyone tends to just stick with the Sun JVM because is easily available and reliable.
However, I'm considering suggesting that our clients move to a different JVM for the performance reasons described below:
I wrote a series of performance tests to measure the time taken to repeat certain common tasks from our apps. I was surprised to find that the BEA JRockit JVM outperformed the SUn JVM by a long, long way in certain tasks, and was slower in none.
Here's a selection of (subjective) results:
Log Lines written per second - Sun 21,000 BEA 29,000
Time taken to call (100000000) methods - Sun .907s BEA .269s
Time taken to call (100000000) sync methods - Sun 17s BEA 12.4s
Time to create big byte array - Sun 125ms BEA 32msi would go for the intel/dual-proc optimisation answer for the difference.
Although 50%? Logging to files uses most time with file access. Didn't know that was optimized either. (learning new stuff every day :-)
But then again, 1 great thing about Java: write once, run anywhere (on any JVM, except for mickeysoft: they have their own neat thingie called the M$ VM, which downgrades performance by a 1000% and uses the 1.1.3 spec)
As a thumb rule: either provide the JVM of your choice to your customers and make it mandatory to use that one, or make sure that it runs with (reasonable) performance under the slowest JVM. (p.s. 99% of the users use the Sun JVM for what i've seen, so if you let your clients choose: Sun's the way to go). -
NullPointerException in message queue!!!
I'm using Sun Message Queue 3 3005Q4. I get the following error in one of the queues. The message size and no of messages is evrything in limit. Can anyone tell what this error is about???
[14/Aug/2006:02:53:44 EDT] [B1065]: Accepting: [email protected]:51890->jms:59200. Count=545
[14/Aug/2006:02:54:04 EDT] Internal Error Unable to consume [consumer:0, type=CLIENT_ACKNOWLEDGE]:null:
java.lang.NullPointerException
ThanksI'm using Sun Message Queue 3 3005Q4. I get the
following error in one of the queues. The message
size and no of messages is evrything in limit. Can
anyone tell what this error is about???
[14/Aug/2006:02:53:44 EDT] [B1065]: Accepting:
[email protected]:51890->jms:59200. Count=545
[14/Aug/2006:02:54:04 EDT] Internal Error Unable to
consume [consumer:0, type=CLIENT_ACKNOWLEDGE]:null:
java.lang.NullPointerException
ThanksMy interpretation of that errors is that the acknowledgement mode is null.
Could it be that you did not specify an acknowledgment mode? i.e:
subTopic = BusObjectStore.getTopic(jndiTopicName);
ts = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
tsub = ts.createSubscriber(subTopic); -
BPE adapter : message not used by any process
hi frnds,
I've created 2 scenarios using BPM
1) merge scenario: 2 msgs ==> BPM ==> 1 msg
1st msg is going without any problem. but 2nd msg is giving error saying 'BPE ADAPTER ERROR: message not used by any process'. i checked in sxi_cache and found that return code for Intg'n process is 0 only. but still i tried reactivating. but no use
2) split scenario: 1 msg ==> BPM ==> 2 msgs
sender msg is going without any problem,but not receiving 2 rcvr msgs to the target directory. return code of IP is 0 and no other errors.
after installing PI on my system, for the first time i'm trying BPM scenarios. simple file to file working properly. BPE adapter has to be activated manually or i missed any initial configuration??? pls help me to resolve this.
thanks.abhishek,
I have used the following steps in BPM for this scenario xml file ==> BPM ==>xml file
1) data types: a)send_dt
b) rcv_dt
2) msg types a) send_mt
b)rcv_mt
3) interfaces : send_ob_im
send_abs_im
rcv_abs_im
rcv_ib_im
in integration process,
start ==> receive ==> send ==> stop
so in general its like,
send CC ==> send OB I/F ==> send ABS I/F ==> rcv ABS I/F ==> rcv IB I/F ==> rcv CC
when i'm not using BPM, outbound queue SMQ1 is empty and messages are not stickking up there. but if i use BPM, SMQ1 is having entry saying 'SYSFAIL'. for the first time i'm doing the BPM scenarios.
thanks. -
Intial information:
SUN MQ 4.3
Local installation
Purpose: use dead message queue.
As per refered in SUN MQ admin guide have updated the broker
imqcmd update dst -t q -n TestQueue1 -o useDMQ=true
imqcmd update dst -t q -n TestQueue1 -o MaxBytesPerMsg=150000
Also java program sending message to the queue and data is of size 171KB(171000)
With above setting I expect the message to go to mq.sys.dmq, however its not? Any one have answer?
Or any one have used dead message queue with SUN MQ?
Any help will be appreciated.
Madhav
Edited by: user10111912 on Jan 20, 2011 4:18 PMIn this case, the message will be rejected, that is it does not get into the destination, which is different from a message in the destination becomes "dead" - dead message.
-
Message queues and expiry *HELP*
My problem is hopefully a simple one to overcome. Without going totally in depth, i have a Server program that creates JMS Object messages and sends them off to a message Queue. Then i have another program, a client, that recieves and processes the object messages accordingly.
In my case, the server and the client will be on diferent sides of a erroneous wireless setup.
Basically i want messages to be recieved if, and ONLY if, there is a complete connection to the client, if there is no connection there i want the message to expire. I tried using timeToLive(), but that will not suffice, as there is no way i can tell how long the message will take to reach the JMS provvider, and hence the client.
Also in using a message Queue the unrecieved messages build up and the latest messages will not be recieved until all outdated ones are recieved. Is there another generic sort of connection that doesn not allow for the build up of messages? unlike topic and queue?Hi.
Strange, you are describing the correct behavior for JMS.
The simplest way will be to not use JMS at all.
Since you can't (via JMS) check the connection status, you'd either have to do it
via the provider's mechanism, or use the TTL.
As for the queue you are using for the unreceived messages - thar's also a TTL issue. Set a TTL
and the queue will clear up.
It might be worthwhile to look into the provider's admin options - perhaps you may be ablr to set ttl at
the provider itself, which will mean that you don't mind how long it takes the message to get to the provider - only how long it takes it from the provider to the destination.
Nimo. -
Can anyone tell me what's the difference between Message Que and RFC Queue?
Thanks
MarkDear,
Connectionless programming involves using a queue to hold user input to another application or server. Here, we may not have a permanent connection to the application or server. Instead you log your input in a queue and the other application or server then takes it from the queue, processes it, and sometimes it may put the result back to the same queue or to a different queue. Unlike UDP, here there is no chance of message or data loss once you log it into queues.
The Connection oriented is different from the aforementioned and talks about any standard database system (DBMS, RDBMS, OODBMS and ORDBMS) available these days. Presumably, I don't think that there should be an explanation required for connection oriented programming. Unlike TCP/IP, there is no chance of data packet loss and it will bring the data packet to the required destination.
In short, message queue is purely connectionless and gives an assurance that it won't lose any data which is in the queue.
Message queue will be used :
a.Storing insignificant information in the message queue while your database server is busy with other real time processing.
b.Process user input which is given by the user after getting supporting information from other source or applications that are not active or ready at this stage.
c.Because of database server outage, you might require keeping user input in the message queue and processing it as and when the database comes online.
d.Exchanging data with a mainframe system like SAP. Personally, the real time communication with SAP is often a problem. In such cases, the SAP system uses message queue for storing and forwarding information where real time communication is not possible at that time.
RFC Queue:
Communication between applications in different systems in the SAP environment includes connections between SAP systems as well as between SAP systems and non-SAP systems. Remote Function Call (RFC) is the standard SAP interface for communication between SAP systems. RFC calls a function to be executed in a remote system.
In short, essentially application infrastructure and business requirements determine whether you should use a message queue or not. Personally, I would suggest that itu2019s a good idea to work with a tool for a while so that you can get to the solution in which you should use it.
http://help.sap.com/SAPhelp_nw04/helpdata/en/6f/1bd5b6a85b11d6b28500508b5d5211/content.htm
Regards,
Syed Hussain. -
Problem with GlassFish and Sun Java System Message Queue
Hi,
I used application server PE.8 and I upgraded to Sun Java System Application Server Platform Edition 9.0 Update 1 Patch 1, and I changed all my CLASSPATH and everything. My system is working fine, but the Sun Java System Message Queue that I used before is still showing the queues and physical queues of the previous application server, not the new one. Do you know if there is way to change that and link it to the new version?
thanksUse an ESB like ServiceMix to bridge JMS providers
http://servicemix.org/
Or write your own MessageListener to consume from one JMS and publish on another one. Be careful with queues to avoid loosing the ordering - so you probably want to use a single MessageListener per subscription/queue - or to take advantage of Tibco's exclusive queues to ensure ordering is preserved. If ordering doesn't matter then don't worry too much about it and maybe have a pool of consumers to improve throughput
James
http://logicblaze.com/ -
Clean up queue in SUN Messaging Server 6.3
I have a couple of SUN Messaging servers with each about a 1'000'000 e-mail messages in their queues.
The reason is one of our customers being infected with some trojan, and a firewall misconfiguration which allowed direct access to the SUN messagings servers (where we host our customers mailboxes) , rather then through the Postfix boxes with rate limiting, anti-spam and anti-virus scanning which they are supposed to use as outgoing SMTP servers. In short we were used as a SPAM relay. Grrr.
As you can image the queue is now filled with undeliverable e-mail and undeliverable bounces.
The question is simply can I safely delete the offending messages from the queue directory, because the imsimta qclean does a lousy job.
imsimta qclean -content=<IP-OFFENDER> -delete* found only 75'000 messages from which 20% was removed. A simple grep <IP-OFFENDER> found still thousand of messages in the queue.
Arg, by default imsimta qclean only scans message ID's found in it's own database which is limited in size (and much smaller then our actual queue size)
imsimta qclean -content=<IP-OFFENDER> -directory_tree -delete* scans the actual queue directory and found indeed over a million mail messages in the queue. After scanning for a couple of hours it removed 150'000 messages. Leaving about 85% of the spam mails untouched!
Is it safe to simply use a shell script to find and remove the messages in the queue directory and delete them? Or will that break SUN messaging servers internal queue handler?
TIA
HermanHi,
hbruijn wrote:
The reason is one of our customers being infected with some trojan, and a firewall misconfiguration which allowed direct access to the SUN messagings servers (where we host our customers mailboxes) , rather then through the Postfix boxes with rate limiting, anti-spam and anti-virus scanning which they are supposed to use as outgoing SMTP servers. In short we were used as a SPAM relay. Grrr.As an aside, Messaging Server 6.3 also offers rate-limiting capability (metermaid) and various anti-virus/anti-spam capability. I wrote up a general document about this at:
http://msg.wikidoc.info/index.php/Main_Page
As you can image the queue is now filled with undeliverable e-mail and undeliverable bounces. You are not the only forum person to hit such an issue recently:
http://forum.java.sun.com/thread.jspa?threadID=5210669&messageID=9848719
The question is simply can I safely delete the offending messages from the queue directory, because the imsimta qclean does a lousy job. Yes. If the job_controller sees that the message has been deleted, it will simply remove the queued message from its cache and move on. Depending on your log level you may see an entry in the imta log file about this.. something along the lines of file <queue file> no longer exists.
imsimta qclean -content=<IP-OFFENDER> -delete* found only 75'000 messages from which 20% was removed. A simple grep <IP-OFFENDER> found still thousand of messages in the queue.
Arg, by default imsimta qclean only scans message ID's found in it's own database which is limited in size (and much smaller then our actual queue size)By default the job_controller will only keep a maximum of 100,000 messages in cache - a percentage of this is dedicated towards new emails and the rest is queued emails. This limit is to stop the job_controller consuming all your available RAM when you get hit by events such as this. The imsimta qclean uses this cache to search for messages -- which is vastly quicker then (re)scanning so many emails on disk.
The maximum is controlled by the MAX_MESSAGES job_controller.cnf parameter - discussed here:
http://docs.sun.com/app/docs/doc/819-4428/6n6j425uh?l=en&a=view&q=max_messages
and here:
http://docs.sun.com/app/docs/doc/819-4428/6n6j425v7?l=en&a=view#bgajv
imsimta qclean -content=<IP-OFFENDER> -directory_tree -delete* scans the actual queue directory and found indeed over a million mail messages in the queue. After scanning for a couple of hours it removed 150'000 messages. Leaving about 85% of the spam mails untouched! Well I can't explain this off-hand. I would need to try and reproduce the issue in-house with an example email that wasn't matched. What version of MS6.3 are you running (./imsimta version)?
btw. you can use the "-threads=<number from 1-8>" qclean command to speed up the scanning process by running multiple scanning threads.
Is it safe to simply use a shell script to find and remove the messages in the queue directory and delete them? Or will that break SUN messaging servers internal queue handler?Should be fine - once you have removed them though you may want to run:
./imsimta cache -sync
This will kick-off a re-sync of the job_controller cache so that the job_controller is better able to process the remaining emails (rather then hitting missing email after missing email).
Regards,
Shane. -
HTTP transport and Sun ONE Message Queue
How do I get the HTTP transport to work? The docs don't seem to be correct.
There are a couple of errors in the Sun ONE Message Queue docs that shipped with
the product.
The following are corrections for those errors.
Servlet configuration
Please note the following correction in the Sun ONE Message Queue 2.0
Administration Guide, Appendix B -
The class name of the HTTP Servlet in Step 4 of the "Configuring the Tunnel Servlet"
section is given as:
com.sun.messging.jmq.transport.httptunnel.servlet.HTTPTunnelServlet
The correct class name is :
com.sun.messaging.jmq.transport.httptunnel.servlet.HttpTunnelServlet
Client setup for HTTP support
1.The following connection factory attributes must be specified to use the HTTP
tunnel connection support.
JMQConnectionType :
Set this attribute to "HTTP".
JMQConnectionURL :
Set this attribute to the URL that will be used to connect to the Sun ONE
Message Queue message service (i.e. the URL for the HTTP tunnel servlet).
Note that there is no need to specify the JMQConnectionHandler attribute as
mentioned in the Sun ONE Message Queue 2.0 Administration Guide -
Appendix B.
2.Before running the client application, set the CLASSPATH variable to include
jmqutil.jar in addition to the standard Sun ONE Message Queue jar files.
This file is located at "/opt/SUNWjmq/lib/jmqutil.jar".
If the "jmqutil.jar" file is not included in the CLASSPATH, the client will get a
"java.lang.NoClassDefFoundError" exception for the class
"com/sun/messaging/jmq/util/JMQTimerTask".
3.If you are using an HTTP proxy, set "http.proxyHost" to the proxy server host
name, and "http.proxyPort" to the proxy server port number using the -D
command line option.
An example command line would look like this:
java -classpath
/opt/SUNWjmq/lib/jms.jar:/opt/SUNWjmq/lib/jmq.jar:
/opt/SUNWjmq/lib/jndi.jar:.:/opt/SUNWjmq/lib/jmqutil.jar
-DJMQConnectionType=HTTP
-DJMQConnectionURL=http://webserver:80/imq/servlet ClientApplicaiton
Maybe you are looking for
-
Can we have a Signature in the Adobe Send? also can it remember our passed email recipients address like SendNow did?
-
Satellite M40-225 and Vista PCMCIA driver
I lost my original disks for my M40 so bought a copy of Vista to install on my computer, when I first installed it the computer would not start up so I looked on the internet and it seems there is a conflict with the PCMCIA drivers and Vista. I follo
-
I deleted my photos on iPad. How do I recover them back?
How can I recover some photos from my iPad that I accidentally deleted.
-
Scan software for OfficeJet 4215 in Leopard 10.5
I read here that scan software for the HP OfficeJet 4215 under OS 10.5 was being tested and almost ready for release. That was in October, 2009. I can't find it anywhere. The HP download site says that the scanner function of the 4215 is not supporte
-
None of my triggers seem to be working?
none of the triggers work on my project? if someone could help i would much appreciate it.