blob: 1afc640b6999042ee4315a6d5b9b2e5dddff8313 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>MessageConsumer</title>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MessageConsumer";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../jakarta/jms/MessageEOFException.html" title="class in jakarta.jms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?jakarta/jms/MessageConsumer.html" target="_top">Frames</a></li>
<li><a href="MessageConsumer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.jms</div>
<h2 title="Interface MessageConsumer" class="title">Interface MessageConsumer</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>java.lang.AutoCloseable</dd>
</dl>
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../jakarta/jms/QueueReceiver.html" title="interface in jakarta.jms">QueueReceiver</a>, <a href="../../jakarta/jms/TopicSubscriber.html" title="interface in jakarta.jms">TopicSubscriber</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">MessageConsumer</span>
extends java.lang.AutoCloseable</pre>
<div class="block">A client uses a <code>MessageConsumer</code> object to receive messages from a destination. A <code>MessageConsumer</code>
object is created by passing a <code>Destination</code> object to a message-consumer creation method supplied by a
session.
<p>
<code>MessageConsumer</code> is the parent interface for all message consumers.
<p>
A <code>MessageConsumer</code> can be created with a message selector. A message selector allows the client to restrict
the messages delivered to the message consumer to those that match the selector.
<p>
A client may either synchronously receive a <code>MessageConsumer</code>'s messages or have the <code>MessageConsumer</code>
asynchronously deliver them as they arrive.
<p>
For synchronous receipt, a client can request the next message from a <code>MessageConsumer</code> using one of its
<code>receive</code> methods. There are several variations of <code>receive</code> that allow a client to poll or wait for the
next message.
<p>
For asynchronous delivery, a client can register a <code>MessageListener</code> object with a <code>MessageConsumer</code>. As
messages arrive at the <code>MessageConsumer</code>, it delivers them by calling the <code>MessageListener</code>'s
<code>onMessage</code> method.
<p>
It is a client programming error for a <code>MessageListener</code> to throw an exception.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>JMS 1.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/jms/QueueReceiver.html" title="interface in jakarta.jms"><code>QueueReceiver</code></a>,
<a href="../../jakarta/jms/TopicSubscriber.html" title="interface in jakarta.jms"><code>TopicSubscriber</code></a>,
<a href="../../jakarta/jms/Session.html" title="interface in jakarta.jms"><code>Session</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#close--">close</a></span>()</code>
<div class="block">Closes the message consumer.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../jakarta/jms/MessageListener.html" title="interface in jakarta.jms">MessageListener</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#getMessageListener--">getMessageListener</a></span>()</code>
<div class="block">Gets the <code>MessageConsumer</code>'s <code>MessageListener</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#getMessageSelector--">getMessageSelector</a></span>()</code>
<div class="block">Gets this message consumer's message selector expression.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#receive--">receive</a></span>()</code>
<div class="block">Receives the next message produced for this message consumer.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#receive-long-">receive</a></span>(long&nbsp;timeout)</code>
<div class="block">Receives the next message that arrives within the specified timeout interval.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#receiveNoWait--">receiveNoWait</a></span>()</code>
<div class="block">Receives the next message if one is immediately available.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../jakarta/jms/MessageConsumer.html#setMessageListener-jakarta.jms.MessageListener-">setMessageListener</a></span>(<a href="../../jakarta/jms/MessageListener.html" title="interface in jakarta.jms">MessageListener</a>&nbsp;listener)</code>
<div class="block">Sets the <code>MessageConsumer</code>'s <code>MessageListener</code>.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getMessageSelector--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMessageSelector</h4>
<pre>java.lang.String&nbsp;getMessageSelector()
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Gets this message consumer's message selector expression.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>this message consumer's message selector, or null if no message selector exists for the message consumer
(that is, if the message selector was not set or was set to null or the empty string)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to get the message selector due to some internal error.</dd>
</dl>
</li>
</ul>
<a name="getMessageListener--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMessageListener</h4>
<pre><a href="../../jakarta/jms/MessageListener.html" title="interface in jakarta.jms">MessageListener</a>&nbsp;getMessageListener()
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Gets the <code>MessageConsumer</code>'s <code>MessageListener</code>.
<p>
This method must not be used in a Jakarta EE web or EJB application. Doing so may cause a <code>JMSException</code> to be
thrown though this is not guaranteed.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <code>MessageConsumer</code>'s <code>MessageListener</code>, or null if one was not set</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to get the <code>MessageListener</code> for one of the following
reasons:
<ul>
<li>an internal error has occurred or
<li>this method has been called in a Jakarta EE web or EJB application (though it is not guaranteed that an exception is
thrown in this case)
</ul></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/jms/MessageConsumer.html#setMessageListener-jakarta.jms.MessageListener-"><code>setMessageListener(jakarta.jms.MessageListener)</code></a></dd>
</dl>
</li>
</ul>
<a name="setMessageListener-jakarta.jms.MessageListener-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMessageListener</h4>
<pre>void&nbsp;setMessageListener(<a href="../../jakarta/jms/MessageListener.html" title="interface in jakarta.jms">MessageListener</a>&nbsp;listener)
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Sets the <code>MessageConsumer</code>'s <code>MessageListener</code>.
<p>
Setting the the <code>MessageListener</code> to null is the equivalent of unsetting the <code>MessageListener</code> for the
<code>MessageConsumer</code>.
<p>
The effect of calling this method while messages are being consumed by an existing listener or the
<code>MessageConsumer</code> is being used to consume messages synchronously is undefined.
<p>
This method must not be used in a Jakarta EE web or EJB application. Doing so may cause a <code>JMSException</code> to be
thrown though this is not guaranteed.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>listener</code> - the listener to which the messages are to be delivered</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to set the <code>MessageConsumer</code>'s <code>MessageListener</code> for
one of the following reasons:
<ul>
<li>an internal error has occurred or
<li>this method has been called in a Jakarta EE web or EJB application (though it is not guaranteed that an exception is
thrown in this case)
</ul></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../jakarta/jms/MessageConsumer.html#getMessageListener--"><code>getMessageListener()</code></a></dd>
</dl>
</li>
</ul>
<a name="receive--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>receive</h4>
<pre><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a>&nbsp;receive()
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Receives the next message produced for this message consumer.
<p>
This call blocks indefinitely until a message is produced or until this message consumer is closed.
<p>
If this <code>receive</code> is done within a transaction, the consumer retains the message until the transaction commits.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the next message produced for this message consumer, or null if this message consumer is concurrently closed</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to receive the next message due to some internal error.</dd>
</dl>
</li>
</ul>
<a name="receive-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>receive</h4>
<pre><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a>&nbsp;receive(long&nbsp;timeout)
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Receives the next message that arrives within the specified timeout interval.
<p>
This call blocks until a message arrives, the timeout expires, or this message consumer is closed. A <code>timeout</code>
of zero never expires, and the call blocks indefinitely.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeout</code> - the timeout value (in milliseconds)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the next message produced for this message consumer, or null if the timeout expires or this message consumer
is concurrently closed</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to receive the next message due to some internal error.</dd>
</dl>
</li>
</ul>
<a name="receiveNoWait--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>receiveNoWait</h4>
<pre><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms">Message</a>&nbsp;receiveNoWait()
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Receives the next message if one is immediately available.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the next message produced for this message consumer, or null if one is not available</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to receive the next message due to some internal error.</dd>
</dl>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>close</h4>
<pre>void&nbsp;close()
throws <a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></pre>
<div class="block">Closes the message consumer.
<p>
Since a provider may allocate some resources on behalf of a <code>MessageConsumer</code> outside the Java virtual machine,
clients should close them when they are not needed. Relying on garbage collection to eventually reclaim these
resources may not be timely enough.
<p>
This call will block until a <code>receive</code> call in progress on this consumer has completed. A blocked
<code>receive</code> call returns null when this message consumer is closed.
<p>
If this method is called whilst a message listener is in progress in another thread then it will block until the
message listener has completed.
<p>
This method may be called from a message listener's <code>onMessage</code> method on its own consumer. After this method
returns the <code>onMessage</code> method will be allowed to complete normally.
<p>
This method is the only <code>MessageConsumer</code> method that can be called concurrently.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../jakarta/jms/JMSException.html" title="class in jakarta.jms">JMSException</a></code> - if the Jakarta Messaging provider fails to close the consumer due to some internal error.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../jakarta/jms/Message.html" title="interface in jakarta.jms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../jakarta/jms/MessageEOFException.html" title="class in jakarta.jms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?jakarta/jms/MessageConsumer.html" target="_top">Frames</a></li>
<li><a href="MessageConsumer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>