001/*
002 * Copyright 2009 Red Hat, Inc.
003 * Red Hat licenses this file to you under the Apache License, version
004 * 2.0 (the "License"); you may not use this file except in compliance
005 * with the License.  You may obtain a copy of the License at
006 *    http://www.apache.org/licenses/LICENSE-2.0
007 * Unless required by applicable law or agreed to in writing, software
008 * distributed under the License is distributed on an "AS IS" BASIS,
009 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
010 * implied.  See the License for the specific language governing
011 * permissions and limitations under the License.
012 */
013
014package org.hornetq.api.jms.management;
015
016import org.hornetq.api.core.DiscoveryGroupConfiguration;
017import org.hornetq.api.core.TransportConfiguration;
018import org.hornetq.api.core.client.ClientSessionFactory;
019import org.hornetq.api.core.management.Operation;
020import org.hornetq.api.core.management.Parameter;
021
022/**
023 * A ConnectionFactoryControl is used to manage a JMS ConnectionFactory.
024 * <br>
025 * HornetQ JMS ConnectionFactory uses an underlying ClientSessionFactory to connect to HornetQ servers.
026 * Please refer to the ClientSessionFactory for a detailed description.
027 * 
028 * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>
029 * @author <a href="mailto:fox@redhat.com">Tim Fox</a>
030 * 
031 * @see ClientSessionFactory
032 */
033public interface ConnectionFactoryControl
034{
035   /**
036    * Returns the configuration name of this connection factory.
037    */
038   String getName();
039
040   /**
041    * Returns the JNDI bindings associated  to this connection factory.
042    */
043   String[] getJNDIBindings();
044
045   /**
046    * does ths cf support HA
047    * @return true if it supports HA
048    */
049   boolean isHA();
050
051   /**
052   * return the type of factory
053    * @return 0 = jms cf, 1 = queue cf, 2 = topic cf, 3 = xa cf, 4 = xa queue cf, 5 = xa topic cf
054   */
055   int getFactoryType();
056
057   /**
058    * Returns the Client ID of this connection factory (or {@code null} if it is not set.
059    */
060   String getClientID();
061
062   /**
063   * Sets the Client ID for this connection factory.
064   */
065   void setClientID(String clientID);
066   
067   boolean isCompressLargeMessages();
068   
069   void setCompressLargeMessages(boolean compress);
070
071   /**
072    * @see ClientSessionFactory#getClientFailureCheckPeriod()
073    */
074   long getClientFailureCheckPeriod();
075
076   /**
077    * @see ClientSessionFactory#setClientFailureCheckPeriod
078    */
079   void setClientFailureCheckPeriod(long clientFailureCheckPeriod);
080
081   /**
082    * @see ClientSessionFactory#getCallTimeout()
083    */
084   long getCallTimeout();
085
086   /**
087    * @see ClientSessionFactory#setCallTimeout(long)
088    */
089   void setCallTimeout(long callTimeout);
090
091   /**
092    * Returns the batch size (in bytes) between acknowledgements when using DUPS_OK_ACKNOWLEDGE mode.
093    * 
094    * @see ClientSessionFactory#getAckBatchSize()
095    * @see javax.jms.Session#DUPS_OK_ACKNOWLEDGE
096    */
097   int getDupsOKBatchSize();
098
099   /**
100    * @see ClientSessionFactory#setAckBatchSize(int)
101    */
102   void setDupsOKBatchSize(int dupsOKBatchSize);
103
104   /**
105    * @see ClientSessionFactory#getConsumerMaxRate()
106    */
107   int getConsumerMaxRate();
108
109   /**
110    * @see ClientSessionFactory#setConsumerMaxRate(int)
111    */
112   void setConsumerMaxRate(int consumerMaxRate);
113
114   /**
115    * @see ClientSessionFactory#getConsumerWindowSize()
116    */
117   int getConsumerWindowSize();
118
119   /**
120    * @see ClientSessionFactory#setConfirmationWindowSize(int)
121    */
122   void setConsumerWindowSize(int consumerWindowSize);
123
124   /**
125    * @see ClientSessionFactory#getProducerMaxRate()
126    */
127   int getProducerMaxRate();
128
129   /**
130    * @see ClientSessionFactory#setProducerMaxRate(int)
131    */
132   void setProducerMaxRate(int producerMaxRate);
133
134   /**
135    * @see ClientSessionFactory#getConfirmationWindowSize()
136    */
137   int getConfirmationWindowSize();
138
139    /**
140    * @see ClientSessionFactory#setConfirmationWindowSize(int)
141    */
142   void setConfirmationWindowSize(int confirmationWindowSize);
143
144   /**
145    * @see ClientSessionFactory#isBlockOnAcknowledge()
146    */
147   boolean isBlockOnAcknowledge();
148
149    /**
150    * @see ClientSessionFactory#setBlockOnAcknowledge(boolean)
151    */
152   void setBlockOnAcknowledge(boolean blockOnAcknowledge);
153
154   /**
155    * @see ClientSessionFactory#isBlockOnDurableSend()
156    */
157   boolean isBlockOnDurableSend();
158
159    /**
160    * @see ClientSessionFactory#setBlockOnDurableSend(boolean)
161    */
162   void setBlockOnDurableSend(boolean blockOnDurableSend);
163
164   /**
165    * @see ClientSessionFactory#isBlockOnNonDurableSend()
166    */
167   boolean isBlockOnNonDurableSend();
168
169    /**
170    * @see ClientSessionFactory#setBlockOnNonDurableSend(boolean)
171    */
172   void setBlockOnNonDurableSend(boolean blockOnNonDurableSend);
173
174   /**
175    * @see ClientSessionFactory#isPreAcknowledge()
176    */
177   boolean isPreAcknowledge();
178
179    /**
180    * @see ClientSessionFactory#setPreAcknowledge(boolean)
181    */
182   void setPreAcknowledge(boolean preAcknowledge);
183
184
185   /**
186    * @see ClientSessionFactory#getConnectionTTL()
187    */
188   long getConnectionTTL();
189
190    /**
191    * @see ClientSessionFactory#setConnectionTTL(long)
192    */
193   void setConnectionTTL(long connectionTTL);
194
195   /**
196    * Returns the batch size (in bytes) between acknowledgements when using a transacted session.
197    * 
198    * @see ClientSessionFactory#getAckBatchSize()
199    */
200   int getTransactionBatchSize();
201
202    /**
203    * @see ClientSessionFactory#setAckBatchSize(int)
204    */
205   void setTransactionBatchSize(int transactionBatchSize);
206
207   /**
208    * @see ClientSessionFactory#getMinLargeMessageSize()
209    */
210   int getMinLargeMessageSize();
211
212    /**
213    * @see ClientSessionFactory#setMinLargeMessageSize(int)
214    */
215   void setMinLargeMessageSize(int minLargeMessageSize);
216
217   /**
218    * @see ClientSessionFactory#isAutoGroup()
219    */
220   boolean isAutoGroup();
221
222    /**
223    * @see ClientSessionFactory#setAutoGroup(boolean)
224    */
225   void setAutoGroup(boolean autoGroup);
226
227   /**
228    * @see ClientSessionFactory#getRetryInterval()
229    */
230   long getRetryInterval();
231
232    /**
233    * @see ClientSessionFactory#setRetryInterval(long)
234    */
235   void setRetryInterval(long retryInterval);
236
237   /**
238    * @see ClientSessionFactory#getRetryIntervalMultiplier()
239    */
240   double getRetryIntervalMultiplier();
241
242    /**
243    * @see ClientSessionFactory#setRetryIntervalMultiplier(double)
244    */
245   void setRetryIntervalMultiplier(double retryIntervalMultiplier);
246
247   /**
248    * @see ClientSessionFactory#getReconnectAttempts()
249    */
250   int getReconnectAttempts();
251
252    /**
253    * @see ClientSessionFactory#setReconnectAttempts(int)
254    */
255   void setReconnectAttempts(int reconnectAttempts);
256   
257   /**
258    * @see ClientSessionFactory#isFailoverOnInitialConnection()
259    */
260   boolean isFailoverOnInitialConnection();
261
262    /**
263    * @see ClientSessionFactory#setFailoverOnInitialConnection(boolean)
264    */
265   void setFailoverOnInitialConnection(boolean failoverOnInitialConnection);
266
267
268    /**
269    * @see org.hornetq.api.core.client.ClientSessionFactory#getProducerWindowSize()
270    */
271   int getProducerWindowSize();
272
273    /**
274    * @see ClientSessionFactory#setProducerWindowSize(int)
275    */
276   void setProducerWindowSize(int producerWindowSize);
277
278    /**
279    * @see ClientSessionFactory#isCacheLargeMessagesClient()
280    */
281   boolean isCacheLargeMessagesClient();
282
283    /**
284    * @see ClientSessionFactory#setCacheLargeMessagesClient(boolean)
285    */
286   void setCacheLargeMessagesClient(boolean cacheLargeMessagesClient);
287
288    /**
289    * @see ClientSessionFactory#getMaxRetryInterval()
290    */
291   long getMaxRetryInterval();
292
293    /**
294    * @see ClientSessionFactory#setMaxRetryInterval(long)
295    */
296   void setMaxRetryInterval(long retryInterval);
297
298    /**
299    * @see ClientSessionFactory#getScheduledThreadPoolMaxSize()
300    */
301   int getScheduledThreadPoolMaxSize();
302
303    /**
304    * @see ClientSessionFactory#setScheduledThreadPoolMaxSize(int)
305    */
306   void setScheduledThreadPoolMaxSize(int scheduledThreadPoolMaxSize);
307
308    /**
309    * @see ClientSessionFactory#getThreadPoolMaxSize()
310    */
311   int getThreadPoolMaxSize();
312
313    /**
314    * @see ClientSessionFactory#setThreadPoolMaxSize(int)
315    */
316   void setThreadPoolMaxSize(int threadPoolMaxSize);
317
318    /**
319    * @see ClientSessionFactory#getGroupID()
320    */
321   String getGroupID();
322
323    /**
324    * @see ClientSessionFactory#setGroupID(String)
325    */
326   void setGroupID(String groupID);
327
328    /**
329    * @see ClientSessionFactory#getInitialMessagePacketSize()
330    */
331   int getInitialMessagePacketSize();
332
333    /**
334    * @see ClientSessionFactory#isUseGlobalPools()
335    */
336   boolean isUseGlobalPools();
337
338    /**
339    * @see ClientSessionFactory#setUseGlobalPools(boolean)
340    */
341   void setUseGlobalPools(boolean useGlobalPools);
342
343    /**
344    * @see ClientSessionFactory#getConnectionLoadBalancingPolicyClassName()
345    */
346   String getConnectionLoadBalancingPolicyClassName();
347
348    /**
349    * @see ClientSessionFactory#setConnectionLoadBalancingPolicyClassName(String)
350    */
351   void setConnectionLoadBalancingPolicyClassName(String connectionLoadBalancingPolicyClassName);
352
353    /**
354    * @see ClientSessionFactory#getStaticConnectors()
355    */
356   TransportConfiguration[] getStaticConnectors();
357
358   /**
359    * get the discovery group configuration
360    */
361   DiscoveryGroupConfiguration getDiscoveryGroupConfiguration();
362
363   /**
364    * Add the JNDI binding to this destination
365    */
366   @Operation(desc = "Adds the factory to another JNDI binding")
367   void addJNDI(@Parameter(name = "jndiBinding", desc = "the name of the binding for JNDI") String jndi) throws Exception;
368}