Friday, May 22, 2015

iib 10

What’s New in IBM Integration Bus V10.0?

 
Posted by Chris Wastchak
Mar 23, 2015 10:29:05 PM
Prior to the InterConnect 2015 conference, IBM announced IBM Integration Bus V10.0.  This is the second product release of IBM Integration Bus (succeeds IIB V9.0), and it is the 10th version of what was previously IBM WebSphere Message Broker, one of IBM's flagship integration products.  The announced release date is March 27th, 2015.
Summa learned about IIB V10's new and exciting features at InterConnect 2015 and can't wait for the release. Here's an overview of the top features and why businesses and developers should look forward to IIB V10:

Simplified Installation Process

One of the most interesting and exciting new features is the simplified installation process.  Historically, IIB was a multi-step installation using Installation Manager that installed MQ, the Broker Runtime, Toolkit, and others as separate, long running steps.  With IIB v10, there is one zip file (1.3 GB) that you can simply extract and you’re ready to go; no installer (well a small one for Windows)!  They believe this will lower the barrier to entry for new customers and clients considering IIB.
They have also updated to Java 7.1 in this release and have decided to optimize for 64-bit operating systems so they are no longer supporting 32-bit machines.  Finally, the Default Configuration Manager is run automatically upon first launch of the toolkit so getting started is a breeze.

No Longer Requires MQ as a Prerequisite

IIB was originally known as MQSeries Integrator (MQSI), and as the name implied, it was an integration product that relied on MQSeries (now known as WebSphere MQ).  Message Broker has always relied on MQ for operation, administration and configuration. Hence, disposing of this requirement was not an evolutionary change, but a major overhaul of core components. Removing this dependency lowers the barrier to entry even further.  You can now develop and deploy applications independently of MQ and also can run and administer nodes without MQ Explorer.  In order to support this new infrastructure, the MQ nodes received an overhaul in the form of adding properties for Connections and Policies to tell IIB where the MQ Queue Managers actually live now.  This new way of connecting to MQ also means that flows can contain multiple MQInput and MQOutput nodes each of which can connect to different queue managers (remote and or local) and allows for new integrations to tie into existing MQ Topologies without having to make wholesale changes.
The good news is that your IBM Integration Bus v10 License still entitles you to install and use MQ with IIB.  So you will still be able to use MQ Nodes and other functionality that comes along with it (aggregation and sequencing, to name a few) if needed.

Enhanced Web User Interface

In IIB v9.0, IBM introduced the Web User Interface (Web UI) for viewing and managing Integration Bus resources in one location without any additional software.  This was good for managing data flow and node performance, but it didn’t allow many of the administrative functions that were available in IIB Explorer and Toolkit.  With IIB v10, IIB Explorer is no longer available and all of its functionality has been added to the Web UI.  This means along with what you could do before, you can now perform the following from the Web UI tool:
  • Create, rename, start, stop, and delete integration servers
  • Deploy BAR files
  • Start, stop, manage, and delete deployed resources
  • View, create, edit, and delete configurable services
  • Create, retrieve, update, and delete operational policies
  • Collect and view resource statistics for your integration servers

Processing MQ Telemetry Transport (MQTT) Messages

MQTT is a lightweight pub/sub messaging protocol that you can now use freely within IIB.  They have included a couple new connectors (utilizing the new connector framework), MQTTSubscribe and MQTTPublish which allow you to build flows using this technology.  With the removal of MQ, you now have more options for pub/sub integrations.

Shared Libraries

This feature was apparently one of the most requested enhancements after the release of Applications and Libraries in IIB v8 and v9.  Essentially, in early versions of IIB, all libraries were static and therefore if you wanted to share them across applications you needed to deploy them into both applications effectively distributing multiple copies of the same library into the Integration Node.  IBM Integration Bus v10 introduces a new library type (actually the default type) called “shared”.  Which allows you to reference the library which is deployed independently of the resources using it.  There are some restrictions to consider of course, but this is a great new feature that I cannot wait to use.

REST API Project with Swagger

In the release of IIB v10, IBM has recognized and closed a gap in terms of support for REST services.  Previously you were able to create your own REST services using HTTPInput, HTTPRequest, and HTTPReply nodes, but there wasn’t any structure within the tool to manage that, so you had to roll most of that on your own.  Also, since REST is not self-defining like SOAP is (via the WSDL), REST was always more complicated to create and manage.  There has been a lot of movement recently in the area of REST APIs and there are many options to choose from such as Mashery, Apiary, RADL, WADL, and many more.   IBM has chosen to implement Swagger in IIB v10 and will allow you to import a Swagger configuration and it will build out the flows for you leaving a series of subflows in order to implement custom logic. This is like a quick-start to a REST API implementation within IIB which also then gives you access to all other resources in your Integration Node (like schemas, shared and static libraries, etc.)

JavaScript Client API

These days, it seems like there is an increasing push towards accessing your integration points from JavaScript more specifically using tools like node.js and on mobile devices.  IBM recognized this and added the ability to create a Web API that you can invoke from JavaScript that is automatically added to new or existing Integration Bus Services.  Once you do this you can access the service via your browser and/or get access to a snippet of JavaScript code you can plugin to your existing JavaScript library.

The Connector Framework

There is a new, open and platform-independent connector framework which is being utilized for most new nodes in IIB v10 (including the MQTT and MQ Nodes).  The connector framework is supposed to be much easier than User Defined Nodes (UDT) and they hope it encourages more customers to build their own reusable endpoints for their projects.  I also heard that since it is platform independent, connectors you write for IIB could potentially run on other IBM products like CastIron.  Imagine if that is actually the case; you could write the connector in a language of your choice (C, Java, .NET, JavaScript) to access your on-premise systems one time and use it across many applications!

Enhanced Unit and Regression Testing Capabilities

During the presentation they talked about some very cool capabilities around testing that are added or refined in IIB v10.  It sounds like we will be able to use IIB with Continuous Integration (CI) tools such as Jenkins and even set it up for some level of regression testing by recording sets of messages and replaying them back.  They also spoke of plans to add some kind of assertion framework (think JUnit) in future releases.  This would bring a whole new level of stability to the platform and avoid the need for messy workarounds to test your flows.  Having been a part of many Java development projects using CI, I’m excited to see what’s new in this space.

Patterns and Samples stored on GitHub

Something that I was surprised and very happy about was the number of times IBMers mentioned GitHub and things that they had either already shared or would share and tweet about.  Following suit, in IIB v10 all of the Patterns and Samples are stored on GitHub which means you only grab them if you need them and any new ones will be published there as soon as they are available.  This just makes things cleaner and easier and also promotes sharing solutions and collaborating with others.

IIB in the Cloud (IPaaS)

Everything these days is about the cloud and the latest buzz around integration is the concept of Integration Platform as a Service or IPaaS.  IBM is thinking ahead to this and has stated that IIB v10 is the first step towards getting to IIB on the cloud.  There is a closed Beta happening right now for IBM Integration Bus Cloud that you can check out if you’re interested where you can try out the new features of using on-premise toolklit installation to access a cloud implementation of IIB.  There is also already a PaaS solution available with IBM PureSystems on SoftLayer if you’re interested.

And much more

In looking through my notes from the conference and the release notes, there are other smaller features in this release of IIB worth noting such as:
  • Analytics now available for in-flight data traveling through IIB via a new Analytics Node and accompanying functionality.
  • DFDL updates such as updating to DFDL 1.1 standards, many functional enhancements, and increased performance for DFDL (already 2x faster than MRM).
  • Schema-less Graphical Data Mapping especially helpful for JSON
  • More support added for WESB to IIB conversions
  • Updates to Industrial Packs (Healthcare, Manufacturing, and Retail)
  • Support for Microsoft SQL Server for recording and replaying messages and overall support added for SQL Server 2014
  • ESQL memory usage significantly reduced for ESQL with heavy use of DECLARE and Field Reference (a big one for us!)
  • Integrated Windows Authentication (for SOAP and HTTP nodes)
  • MQSI commands got an overhaul and now start with “iib”
  • Support for (S)FTP on FileRead node (it already existed on FileInput and FileOutput nodes)
  • Resequence node now has a Failure Retry mechanism for Store & Forward use cases

This sounds like a very good release with lots of features and enhancements that helps IBM Integration Bus v10 maintain its status as one of the best overall solutions for integration needs.  Summa is excited to begin working on this new version.  How about you?  Reply in the comments below if you have any feedback or questions on this new release of IIB. 

Thursday, May 21, 2015

MB INTERVIEW QUESTIONS



WebSphere Message Broker Interview Questions

reference4kids.com

Question:What do you mean by ResetContentDescriptor node?
  Question:What is the difference between an MQGet node nd MQInput node? 
Question: What is the difference between SOAPRequest node and SOAPAsyncRequest node?
Question: What is the difference between Mapping node and Compute node transformation?  
Question: What is the difference between Input and MQInput node?
Question: What is the purpose or use of compute node?
Question: How the interaction with Database does take place using Compute node?
Question:Difference between try catch node and throw node?
Question: How will input messages with different - different delimiters between the fields are handled in WMB?
Question: What do you mean by depth of a Queue?
Question: How can we know the current depth of a queue?
Question: Message Broker supports what all formats?
Question:What all nodes uses ESQL?
Question:What is ESQL?
Question:What functionality ESQL provides?
Question:What are the types of variables in ESQL?
Question:What are external variables, normal variables, or shared variables?
Question:What are patterns?
Question:What are the benefits of using patterns?
Question:How do you ensure that messages do not lose?
Question:How to use functions in your esql code?
Question:What are the ways in which you can access databases from a message flow?

Q:What do you mean by ResetContentDescriptor node?
A:ResetContentDescriptor node request to parse the message with different parser, leaving the message content unchanged.

Q:What is the difference between an MQGet node nd MQInput node?
A:The MQGet node reads a message from a specified queue, and establishes the processing environment for the message. Whereas, The MQInput node receives a message from a WebSphere MQ message queue that is defined on the queue manager of the broker.

You can use an MQGet node anywhere in a message flow, unlike an MQInput node, which you can use only as the first node in a message flow.

Q:What is the difference between SOAPRequest node and SOAPAsyncRequest node?
A:The SOAPAsyncRequest node sends a Web service request, but the node does not wait for the associated Web service response to be received. This asynchronous functionality enables multiple outbound requests to be made almost in parallel because the outbound request is not blocked waiting for the response.

Whereas, The SOAPRequest node is a synchronous request and response node, which blocks processing after sending the request until the response is received. 

Q:What is the difference between Mapping node and Compute node transformation?
A:In Compute node you can transform the message by coding ESQL in the ESQL resource file attached. Whereas, In mapping node you can use graphical maps to transform input message by associating an input message model such as a DFDL or XML schema, or an MRM Message Set and an output message model.

In compute node you can change the entire message even the header assemblies. But, In mapping node you can change the message assembly, message body, and properties.

Q:What is the difference between Input and MQInput node?
A:Use the Input node as an In terminal for an embedded message flow (a subflow).The MQInput node receives a message from a WebSphere MQ message queue that is defined on the queue manager of the broker. It is the first node of your message flow.

Q:What is the purpose or use of compute node?
A:The Compute node is used to:

  • Build a new message using a set of assignment statements
  • Copy messages between parsers
  • Convert messages from one code set to another
  • Transform messages from one format to another

Q:How the interaction with Database does take place using Compute node?
A:In Data Source specify the name by which the appropriate database is known on the system on which this message flow is to execute.

Q:Difference between try catch node and throw node?
A:Include a Throw node to force an error path through the message flow if the content of the message contains unexpected data.

If a downstream node (which can be a Throw node) throws an exception, the TryCatch node catches it and routes the original message to its Catch terminal. Connect the Catch terminal to further nodes to provide error processing for the message after an exception.

Q:How will input messages with different - different delimiters between the fields are handled in WMB?
A:Using MRM domain we can input messages with different - different delimeters between the fields in WMB.

Q:What do you mean by depth of a Queue?
A:Queue depth, is the number of pending input/output messages in a queue.

Q:How can we know the current depth of a queue?
A:
Using MQSC property CURDEPTH we can know the current depth of a queue.

Q:Message Broker supports what all formats?
A:Message Broker supports XML, TDS, CSV, CWF, EDIFACT, SWIFT, COBOL formats

Q:What all nodes uses ESQL?
A:ESQL can be used with the Compute, Database, and Filter nodes.

Q:What is ESQL?
A:Extended Structured Query Language (ESQL) is a programming language based on Structured Query Language (SQL), which is commonly used with relational databases such as DB2. ESQL extends the constructs of the SQL language to provide support for you to work with both message and database content.

Q:What functionality ESQL provides?
A:Through ESQL you can 

  • Change the message content.
  • Modify an existing message
  • Create a new message
  • Add dynamic terminals
  • Route a message
  • Propagate a new request 

Q:What are the types of variables in ESQL?
A:ESQL variables can be described as external variables, normal variables, or shared variables.

Q:What are external variables, normal variables, or shared variables?
A:         External variables:
  • Also known as user defined properties.
  • Exist for entire life time of a message flow and are visible to all messages passed through the flow.
  • Defined at module or schema level.
  • You have to assign an initial value at the time of declaring an external variable and then can modify the initial value at deployment time by using the BAR editor.

    Normal Variables:
  • Have lifetime of just one message pass through a node.
  • Visible to that message only in which it was defined.
  • To define, omit both EXTERNAL and SHARED keyword.

    Shared variable:
  • Used to implement in-memory cache in the message flow.
  • Have a long life time and are visible to multiple messages pass through the flow.
  • Exist for the lifetime of Execution group, lifetime of flow or node, lifetime of node’s ESQL that declares the variable.
    Initialized when the first message pass through the node or flow after broker startup.

Q:What are patterns?
A:A pattern captures a tested solution to a commonly recurring problem, addressing the objectives that you want to achieve.

Q:What are the benefits of using patterns?
A:Patterns provide the following benefits:

  • Give you guidance for the implementation of solutions
  • Increase development efficiency, because resources are generated from a set of predefined templates
  • Result in higher quality solutions, through reuse of assets and common implementation of programming approaches, such as error handling and logging

Q:How do you ensure that messages do not lose?
A:For application and internal messages traveling across WebSphere MQ, two techniques protect against message loss: 

  • Message persistence - If a message is persistent, WebSphere MQ ensures that it is not lost when a failure occurs, by copying it to disk.
  • Sync point control - An application can request that a message is processed in a synchronized unit-of-work .


Q:How to use functions in your esql code?
A:Use CALL keyword to call functions or methods.

Q:What are the ways in which you can access databases from a message flow?
A:You can access a database from a message flow in two ways: 

  • You can design a message flow that responds to events generated by the database.
  • After a flow has already started, you can access the database to read or update information in it. Information from the database can be used to enhance or influence the operation of the message flow.

Wednesday, May 20, 2015