Wednesday, March 2, 2011

TIBCO Enterprise for JMS


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