vbmqmsgque 9.0
Loading...
Searching...
No Matches
Example: MyTransaction

Documentation of the MyTransaction tool used for example.test.

INTRODUCTION

The MyTransaction tool is used to test the longterm-transaction-feature of vbmqmsgque.

To test this feature the client connect to the server and send two service-calls:

  • one longterm-transaction-service-call using the low-api
  • one longterm-transaction-service-call using the high-api

The service-call itself is quite simple:

  • the private part is a string : Privat_Data_1 or Privat_Data_2
  • the public part is an integer : 1111 or 2222

The GOAL for this test is:

  • test the longterm-transaction-feature
  • test the BufferListCheckOptionC with and without default-value
  • test the callback-feature with and without error

CODE client

Imports System
Imports csmsgque.mkkernel
Imports csmsgque.mqmsgque

Public Module example

  Sub callback(ByVal ctx As MqContextC)
    ctx.ReadT_START()
    Dim myPrivateHandle As String = ctx.ReadC()
    ctx.ReadT_END()
    Dim myServiceResult As String = ctx.ReadI()

    Console.WriteLine("myPrivateHandle={0}, myServiceResult={1}", myPrivateHandle, myServiceResult)
  End Sub

  Sub Main(ByVal argv() As String)
    Dim ctx As New MqContextC()
    Try
      ctx.ConfigSetName("MyTransaction")

      ' setup commandline arguments used for parsing
      Dim args As new MkBufferListC(argv)

      ' check if the '--token' option is available, default "SRVC"
      Dim token As String = args.CheckOptionC("--token", "SRVC")

      ' connect to the server
      ctx.LinkCreate(args)

      ' register callback
      ctx.ServiceCreate("CLB1", AddressOf callback)
       
      ' send block using the LOW-Api
      ctx.SendSTART()
      ctx.SendT_START()
      ctx.SendC("Privat_Data_1")
      ctx.SendT_END()
      ctx.SendI(11111)
      ctx.SendEND_AND_TRANSACTION(token, "CLB1")
       
      ' send block using the HIGN-Api -> same as above, but shorter
      ctx.Send("T", "CLB1", token + ":(C)I", "Privat_Data_2", 22222)
       
      ' now we wait for exact ONE result of the "ctx"
      ctx.ProcessEvent(MqWaitOnEventE.OWN)
    Catch ex As Exception
      ctx.ErrorCatch(ex)
    Finally
      ctx.Exit()
    End Try
  End Sub
End Module