TIBCO Enterprise for JMS
1 What is JMS?
Java Message Service 1.1 (JMS) is a Java framework specification for messaging between applications. Sun Microsystems developed this specification, in conjunction with TIBCO and others, to supply a uniform messaging interface among enterprise applications.
2 What is TIBCO EMS?
Its JMS plus it provides enterprise-class functionality such as fault-tolerance, message routing, and communication with other messaging systems like TIBCO
Rendezvous.
JMS supports two messaging models:
* Point-to-point (queues) - one producer and one consumer per message.
* Publish and subscribe (topics)
3 Can we have more than one producer/consumer for a queue?
More than one producer can send messages to the same queue, and more than one consumer can retrieve messages from the same queue.
4 How can you make only one consumer receives message from the queue?
By making the queue exclusive. If the queue is exclusive, then all queue messages can only be retrieved by the first consumer specified for the queue. Exclusive queues are useful when you want only one application to receive messages for a specific queue. If the queue is not exclusive, any number of receivers can retrieve messages from the queue.
5 Why do we need Non-exclusive queues?
Non-exclusive queues are useful for balancing the load of incoming messages across multiple receivers. Regardless of whether the queue is exclusive or not, only one consumer can ever retrieve each message that is placed on the queue.
6 How is broadcast messaging supported in JMS?
JMS supports Broadcast messaging using 'topics'. In this model, the producer is known as a publisher and the consumer is known as a subscriber.
7 Can more than one publishers public on same topic?
YES. All subscribed consumers receive the all messages.
8 What do you mean by 'failsafe' mode?
It is property of Queue. A failsafe mode allows messages to be written to disk synchronously to guarantee no messages are ever lost due to server failure.
9 Is content based routing possible in JMS?
YES. Messages sent to destinations can be routed to other servers.
10 Can JMS Queues/Topics receive TIBCO RV messages??
NO. But TIBCO EMS can receive.
11 Which package is used by the Java Applicatio to send/receive the JMS messages?
'javax.jms' package is used to send/receive messages.
12 What is JMS Message structure?
JMS messages have a standard structure. This structure includes the following sections:
* Header (required)
* Properties (optional)
* Body (optional)
The JMS specification details a standard format for the header and body of a message. Properties are provider-specific and can include information on specific
implementations or enhancements to JMS functionality.
13 What are TIBCO EMS Message properties?
JMS_TIBCO_COMPRESS - Allows messages to be compressed for more efficient storage.
JMS_TIBCO_DISABLE_SENDER - Specifies that the user name of the message sender should not be included in the message, if possible.
JMS_TIBCO_IMPORTED - Set by the server when the message has been imported from TIBCO Rendezvous.
JMS_TIBCO_MSG_EXT - Extends the functionality of map messages to include submessages or arrays.
JMS_TIBCO_MSG_TRACE - Specifies the message should be traced from producer to consumer.
JMS_TIBCO_PRESERVE_UNDELIVERED - Specifies the message is to be placed on the undelivered message queue if the message must be removed.
JMS_TIBCO_SENDER - Contains the user name of the message sender.
14 What are two delivery modes supported by JMS?
PERSISTENT and NON_PERSISTENT.
15 What is SSL?
Secure Sockets Layer (SSL) is a protocol for transmitting encrypted data over the Internet or an internal network. SSL works by using public and private keys to encrypt data that is transferred over the SSL connection. Most web browsers support SSL, and many Web sites and Java applications use the protocol to obtain confidential user information, such as credit card numbers.
16 Can you define the JMS API programming model for client?
Queue/Topic ConnectionFactory >>(Creates)>> Queue/Topic Connection >> (Creates) >> Queue/Topic Session >> (can create 3 things) >> Message/MessageProducer/MessageConsumer
- MessageProducers send messages to queue/topic.
- MessageConsumers receive messages from queue/topic.
- MessageListeners are registered with MessageConsumers and
listen/receive message from the queues/topics.
17 What is ConnnectionFactory Object?
The ConnectionFactory object encapsulates a set of connection configuration parameters. These objects are created using the administration interface and they are stored and managed by the TIBCO Enterprise for JMS server. When a JMS client starts, it typically performs a Java Naming and Directory Interface (JNDI) lookup for the ConnectionFactories that it needs.
18 How can write a generic JMS Client which can talk to any JMS Server?
Each JMS Server have their own unique 'InitialContext'. So in your JMS client set the appropriate 'InitalContext' depending upon which server your are using.
Context ctx = new InitialContext(env);
ConnectionFactory myConnectionFactory =
(ConnectionFactory) ctx.lookup("myConnectionFactory");
19 Tell me some thing about Connection object.
A Connection object encapsulates a virtual connection with the server. ConnectionFactory objects create Connection objects. You use a Connection to create one or more Session objects. A connection is a fairly heavyweight object, and therefore most clients will use one connection for all messaging. You may create multiple connections, if needed by your application.
20 How do I use single connection for mutliple messaging?
Call start() method on connection before consuming message.
21 What are MessageListeners?
A MessageListener object acts as an asynchronous event handler for messages. This object implements the MessageListener interface and has one method, onMessage().
The J2EE 1.3 platform introduced message-driven beans (MDBs) that are a special kind of MessageListener. See the J2EE documentation for more information about MDBs.
22 Explain what are Static Queues/Topics?
Configuration information for static queues and topics is stored in configuration files for the TIBCO Enterprise for JMS server. Static queues and topics are administered by the server. Clients retrieve the destination using JNDI.
23 Explain what are Dynamic Queues/Topics?
Dynamic queues and topics are created on-the-fly by applications using QueueSession.createQueue() and TopicSession.createTopic(). Dynamic queues and topics do not appear in the configuration files, and exist as long as there are messages or consumers on the destination. A JMS client cannot use JNDI to lookup dynamic queues and topics.
24 What are Destination Bridges?
Bridges allow all messages delivered to one destination to also be delivered to the bridged destination. You can bridge between different destination types, between the same destination type, or to more than one destination. Bridges are not transitive.
25 Explain the persistence of message in Queue/Topic?
TIBCO Enterprise for JMS provides two modes for persisting topic/queue messages in external storage.
(i) Normal
- In this mode all the messages are written into file on disk in asynchrouns mode. There is small probability that, in case of software or hardware failure, some data may be lost without the possibility of recovery.
(ii) Failsafe
- In this mode all data for that queue or topic are written into external storage in synchronous mode, i.e. a write operation is not complete until the data is physically recorded on the external device. The failsafe property ensures that no messages are ever lost in case of server failure. Although failsafe mode guarantees no messages are lost, it also significantly affects the performance.
Messages with the persistent delivery mode are always written to persistent storage, except when they are published to a topic that has no durable subscribers.
26 Explain about the secure property of the Queue/Topic.
The secure property, when set on a destination, specifies permissions should be checked for that destination. When a topic or a queue does not have the secure property turned on, any authenticated user can perform any actions with that topic or queue. When the property is turned on, the administrator can assign permissions to the users. The secure property does not mean SSL-level security. Secure only controls basic authentication and permission verification using unencrypted, non-secure communication between the clients and the server. Both the authorization configuration parameter and the secure property on the destination must be set for permissions to be enforced for a particular destination.
27 Explain about the global property of the Queue/Topic.
Messages destined for a topic or queue with the global property set are routed to the other servers that are participating in routing with this server.
28 Explain import/export property of Queue/Topic.
IMPORT: The import property allows messages published by an external system to be received by a TIBCO Enterprise for JMS destination (a topic or a queue), as long as the transport to the external system is configured. Currently you can configure transports for TIBCO Rendezvous reliable and certified messaging protocols.
EXPORT: The export property allows messages published by a JMS client to a topic to be exported to the external systems with configured transports. Currently you can configure transports for TIBCO Rendezvous reliable and certified messaging protocols.
You must configure the communication parameters to the external system by creating a named transport in the transports.conf file.
29 Explain exclusive property of Queues.
In exclusive mode, the first queue consumer receives all of the messages until the consumer fails. At that point, messages are delivered to the next consumer Non-exclusive queues cause messages to be delivered in a round-robin fashion to the set of queue receivers. This prevents a large buildup of messages at one receiver and thereby balances the load of incoming messages across all queue receivers.
30 When is the message delivery paused?
In exclusive mode, If a message cannot be delivered to a queue receiver (because its pre-fetch limit is reached), TIBCO Enterprise for JMS attempts to deliver the message to the next queue receiver. If the server attempts to deliver the message to all registered queue receivers and none of them can accept the new message, the message is returned to the queue and message delivery is paused until a queue receiver reports that it can accept the message.
31 Explain maxbytes property on Queue/Topic?
The maxbytes property has the following rules of inheritance:
* If there is not a direct property value for the child, the most liberal (largest) of the parent or ancestor property values is used.
* The child value, which is directly assigned to the child, overrides any values assigned to ancestors.
32 What is Flow Control?
In some situations, message producers may send messages more rapidly than message consumers can receive them. The pending messages for a destination are stored by the server until they can be delivered, and the server can potentially exhaust its storage capacity if the message consumers do not receive messages quickly enough. To avoid this, TIBCO Enterprise for JMS allows you to control the flow of messages to a destination. Each destination can specify a target maximum size for storing pending messages. When the target is reached, TIBCO Enterprise for JMS blocks message producers when new messages are sent. This effectively slows down message producers until the message consumers can receive the pending messages.
The flow_control parameter in tibjmsd.conf enables and disables flow control globally for the TIBCO Enterprise for JMS server.
If there are no message consumers for a destination, the server does not enforce flow control for the destination.
For global topics where messages are routed between servers, flow control can be specified for a topic on either the server where messages are produced or the server where messages are received. Flow control is not relevant for queue messages that are routed to another server.
If the flowControl property is set on the topic on the server receiving the messages, when the pending message size limit is reached, messages are not forwarded by way of the route until the topic subscriber receives enough messages to lower the pending message size below the specified limit.
If the flowControl property is set on the topic on the server sending the messages, the server may block any topic publishers when sending new messages if messages cannot be sent quickly enough by way of the route. This could be due to network latency between the routed servers or it could be because flow control on the other server is preventing new messages from being sent.
Flow control can be specified on destinations that are bridged to other destinations. If you wish the flow of messages send by way of the bridge to slow down when receivers on the bridged-to destination cannot process the messages quickly enough, you must set the flowControl property on both destinations on either side of the bridge.
33 Explain about JMS Message Bodies?
A JMS message has one of several types of message bodies, or no message body at all. Message: This message type has no body. This is useful for simple event notification.
TextMessage: A java.lang.String. For example, this can be the contents of an XML file.
MapMessage: A set of name/value pairs. The names are java.lang.String objects, and the values are Java primitive value types or their wrappers. The entries can be accessed sequentially by enumeration or directly by name. The order of entries is undefined.
BytesMessage: A stream of uninterrupted bytes. The bytes are not typed; that is, they are not assigned to a primitive data type.
StreamMessage: A stream of primitive values in the Java programming language. Each set of values belongs to a primitive data type, and must be read sequentially.
ObjectMessage: A serializable object constructed in the Java programming language.
34 What are the three levels of Acknowledgements as defined by the JMS specification?
- DUPS_OK_ACKNOWLEDGE, for consumers that are tolerant of duplicate messages.
- AUTO_ACKNOWLEDGE, in which the session automatically acknowledges a client's receipt of a message.
- CLIENT_ACKNOWLEDGE, in which the client acknowledges the message by calling the messag's acknowledge method.
35 Explain the two JMS Message Delivery Mode Extensions provided by TIBCO EMS?
Reliable Message Delivery:
In addition to PERSISTENT and NON_PERSISTENT modes, you can use Tibjms.RELIABLE_DELIVERY mode from TIBCO Enterprise for JMS. System message (i.e. ack) is not sent to the client, hence dose not have to wait. This allows higher message volume. It decreases the volume of message traffic, allowing better usage of system resources, and higher message rates. There are two ways to set the delivery mode to reliable:
- Use a publish() or send() method that accepts a javax.jms.DeliveryMode as a parameter.
- Set the delivery mode for the message producer using the following expression:
messageProducer.setDeliveryMode( com.tibco.tibjms.Tibjms.RELIABLE_DELIVERY);
No-Acknowledgement Message Receipt:
In this mode all the information regarding message that is sent to client is eliminated from the server. Hence there is no need for the client to send the ack. This mode is configured at session level.
javax.jms.TopicSession session =
topicConnection.createTopicSession(
false,com.tibco.tibjms.Tibjms.NO_ACKNOWLEDGE);
36 How do you EMS server in Fault Tolerance mode?
JMS servers are configured as primary and backup servers to provide fault tolerance. The primary and backup servers act as a pair, with the primary server accepting client connections and performing the work of handling JMS messages, and the secondary server acting as a backup in case of failure. The primary and backup servers must both have access to a shared state.
37 What is the shared state?
Shared state can be implemented as shared storage devices or through other mechanisms such as replication. This shared state allows the backup server to take over any active connections and properly handle persistent messages.
Some common ways to implement shared storage are Network Attached Storage (NAS) or Storage Area Network (SAN) devices. Replication schemes from popular vendors such as Veritas or EMC can also be used for replicating the shared state.
To prevent the backup server from assuming the role of the primary server unnecessarily, the primary server locks the shared state during normal operation. If the primary server fails, the lock is released, and the backup server can obtain a lock on the shared state.
# If a queue or a topic is defined as failsafe in the corresponding configuration file, messages for that topic or queue are stored in the sync-msgs.db file.
# If the queue or topic is not defined as failsafe, messages for the queue or topic are stored in async-msgs.db file.
38 What does the shared state include?
The state of the servers includes:
* persisted messages for queues and topics
* information on the primary server’s client connections
* metadata regarding data delivery
39 How to set the FT JMS Server?
A backup fault-tolerant server is specified by having the following configuration parameters set:
* the server parameter must be set to the same name as the primary server
* the ft_active parameter must be set to the URL of the primary server
When the backup server starts, it attempts to connect to the primary server. If the connection can be established, the backup server enters standby mode for the primary. If the connection cannot be established, the backup server becomes the primary server.
40 What is Routing in EMS?
TIBCO Enterprise for JMS provides the ability for servers to route messages between each other. Topic messages can be routed across multiple hops. Queue messages can travel at most one hop to any other server from the server that owns the queue.
Areas to concentrate :
1)TIBCO messaging with smart sockets chapter can be omitted.
2)Bridging chapter had many complicated questions
3)Routing chapter is also important - better if one works on creating routes between two servers and sends messages over queue and topic to understand the exact behaviour.
4)Message listener - important - remember all the criteria to be met for its
implementation and its behaviour when it makes asynchronous calls .The thread
behaviour and what all can be done in the thread when it is till processing a
message.
5)Best way to send a XML message over EMS - make it text message and compress it.
6)What happens when FT is in active-active configuration - behaviour and what can one see when show routes command is executed and are message transfers bidirectional .- in queue/ in topic
7)SSL chapter - only configuration questions - what to set where to get a particular configuration.
8)JNDI look up - what happens when factory is dynamically created and when looked up.
Important figures to remember :
MS API programming model

Rendezvous Transports in the EMS Server

Object lookup in TIBCO Enterprise Message Service server

41 Appendix A – Certification Questions
41.1For storing persistent messages, which files are used by TIBCO EMS?
a) failsafe-msgs.db
b) sync-msgs.db
c) async-msgs.db
d) meta.db
Answer : B,C
41.2 To install settings from response file, which three TIBCO EMS installer modes can be used? (Choose three)
a) sysprep
b) rpm
c) silent
d) GUI
e) Console
Answer : C,D,E
41.3 Authorisation and flow_control properties can be set by boolean values
a)0/1
b)true/false
c)enabled/disabled
d)yes/no
Answer : C
41.4 which is a valid value for the field usr_auth :
a)true
b)local
c)enabled
d)SSL
Answer :B
41.5what is the exception that is thrown when a transaction is rolled back :
a)IllegalTransaction
b)IllegaltransctionRolledback
c)TransactionRolledBack
b)IllegalCall
41.6For the TIBCO EMS message what are the types of acknowledges that can be expected by the client which calls acknowledge() - (Choose3)
a)NO_ACKNOWLEDGE
b)CLIENTACK
c)AUTO
d)EXPLICITCLIENT
e)DUPS_OK_ACKNOWLEDGE
41.7When message exported to TIBCO rendezvous, what are the valid JMS messages that can be expected.
a)bytemessgae
b)arraymessage
c)mapmessage
d)textmessage
41.8EMS server 1, EMS server 2 and EMS server 3 are in Fault tolerant modes and EMS server 3 and EMS server 4 are load balanced, what’s the configuration url :
a) tcp://EMS server1:7222,tcp://EMS server2:7223,tcp://EMS server3:7222| tcp://EMS server4:7223
b) tcp://EMS server1:7222,tcp://EMS server2:7223,tcp://EMS server3:7222,tcp://EMS server4:7223
c) tcp://EMS server1:7222|tcp://EMS server2:7223|tcp://EMS server3:7222,tcp://EMS server4:7223
Answer : A
41.9When a command show groups is executed and in the output a few of the groups have a (*) asterix in front of them - what are the reasons - select the best answer
a)groups are not in the main config file
b)groups are defined in external directory service
c)groups are dynamic
d)groups are system groups
Answer : B
41.10 Sample Configuration files for each activity in EMS server:
a)in the location specified can be found at main conf file for each file
b)in samples/config
c)under /bin
Answer : A
41.11 TIBCO EMS server has authorization enabled. The queues Q1.Cerkiller.BAR, Q1.Cerkiller, and with secure property enabled, QUEUE.SAMPLE have been created. User ADMIN1 has also been created. To give user ADMIN1 view privileges on these queues expect for QUEUE.SAMPLE, name the admin command which has to be executed.
a)grant queue Q1.>ADMIN1 view
b)alter queue Q1.* allow ADMIN1 view
c)grant queue Q1.* ADMIN1 view
d)grant ADMIN1 view Q1.>
Answer : A
41.12 Choose from the list valid JMS headers : (choose 3)
a)JMSTimestamp
b)JMSExpiration
c)JMSRedeliverd
d)JMStimeout
e)JMSContentLength
f)JMSContentType
Answer : A, B, C
41.13 TIBCO EMS server needs to be configured with Authorization=enabled. Select the best way to do this
a)Execute command set server authorization=enabled and restart the server
b)Change the authorization parameter in main tibemsd.conf file and restart the
server.
c)Call admin API to change the value and no need to restart the server
Answer : B
41.14 Fault Tolerant server configuration has A and B as two EMS servers. When and what does B has to do for failover .Select the best answer.
a)B becomes primary server only when it gets access to shared states
b)After timeout B deletes the shared state entry by server A and becomes primary
server
c)B becomes primary server until A is restored
41.15 To integrate with third party app servers : EMS must be :
a)JTA compliant
b)call adapter classes in jar files
c) <MDB which is usually the answer was not the choice provided>
41.16 q1.foo.bar,q1.foo.car and q1.sample are topics on the EMS server, the project
41.16requires to subscribe to topics q.foo.bar and q1.foo.car but not q1.sample, How can it be done
41.17 How is message compression done, what are the header fields set, what role does client play , what role does server play, side effects, advantages - all this in a
41.17scenario and had to pick the right configuration.
41.18 What are the objects that have to be created before a client can publish messages on a topic
41.19 Valid comands in admin tool :pick four - 6 commands where displayed which were very confusing
41.20 msgpoolblocksize
- where is it found and its significance, when best used.
41.21 Conditions when a message are redelivered.
- were confusing with relevant configurations that were to be set
41.22 Which method has to be called to create a queue
Answer : session.createqueue()
41.23 What is significance of metric parameter in connection factory URL
41.24 Questions on MessageListener?If there are 2 consumers C1 and C2, What are the valid statements below?(Choose 2)
a) C1.setMessageListener(L1);C1.receive();
b) C1.setMessageListener(L1);C2.receive();
c) C1.setMessageListener(null);C1.receive();
d) C1.receive();C1.setMessageListener(L1);
e) C1.close();C1.receive();
Answer: B, C, D
41.25 Which object can call convertToString() function?
a) Consumer.
b) Session.
c) Connection.
d) ObjectMessage.
e)TextMessage.(answer)
41.26 Which objects does a JNDI hold?
a) Destination
b) Session
c) Connection factories
d) URL
Answers : A, C
41.27 One has a EMS server running smoothly, you have a producer Q1, when Q1 is killed and a new producer is included which produces messages faster than the consumer can handle.
41.28 What can be done to improve performance.
a. Create multiple consumers on same queue.(load balancing)
b. Set flow control prop.
Answer (a)
41.29 If a durable subscriber is listening on topic.*, it is killed and is recreated but now its listening on topic.cert.* What are the valid statements?
a) The subscribers only listens to only topic.cert.* and receives all the messages which were published after the restart.
b) The subscribers only listens to only topic.cert.* and receives all the messages.
c) The subscribers only listens topic.*.
41.30 When using reliable delivery? .Which of the following is true?
a)Reliable delivery is a specification of JMS.
b) Server performance is decreased.
c) Client performance is decreased.
d) Consumer will receive message until the connection is broken.
41.31 What are the valid values that can be given to JMS header JMSPriority ?
a) High/Low
b) 0 to 9
c) True/false
d) Only 1 to 4
Answer: B
41.32 Question regarding threads: Pick two
a) Session are multithreaded.
b) Connections are multithreaded.
c) Session are single threaded.
d) Connections are single threaded.
Answers : B, C
41.33 What are the valid JMS Headers in the given options?
41.34 What are the valid JMS Properties in the given options?
41.35 Questions on exclusive queues?
41.36 Question on message selectors and Bridges?
41.37 Question on Bridges and Transactions?
41.38 When local-transactions are used, how does bridges work? Either all or none are send
41.39 Question on Routes, this was regarding Propagating Registered Interest?
41.40 How does EMS interface with 3rd party app-servers?One of the option was:
a)TIBCO Enterprise Message Service also implements all interfaces necessary for Java Transaction API (JTA) compliance.
b) Include Adapter class files
Answer : A
41.41 What does store_truncate property in tibemsd do?
41.42 What are the valid properties for fault tolerance given in tibemsd.conf?
Choose 2 from 5 options
41.43 Question on .NET API's and MessageListener?
41.44 Question on behavior of temporary queues?
41.45 Question on different types of message bodies?
41.46 Question on different types of acknowledgements?
41.47 Question on acknowledge available only for topics?
Answer :NO_ACKNOWLEDGE_MODE
41.48 Question on Destination property regarding the trace property?
41.49 If group1 has receive permissions on topic1, and group2 has publish permissions on topic1.If user1 is a member of both group1 and group2, How can you revoke the publish permissions on topic1 given to user1 without disturbing other users.
Answer : This cant be done.
41.50 When exclusive property is set on topic, which statement is true?
Answer :Exclusive property cannot be set on topic.
41.51 Which command is used to alter the prop of destination?
a)addprop
b)setprop
c)AlterProp
d)set
Answer : A
41.52 What is stored in shared state of FT-Servers?
41.53 Question of JMS_TIBCO_PRESERVE_UNDELIVERED property?
41.54 Question on MESSAGE Compression and the advantages?
41.55 Where are transport configurations stored for connecting to external systems?
a) tibemsd.conf
b) factories.conf
c) transports.conf
d) users.conf
Answer: transports.conf
No comments:
Post a Comment