Quanto mi piace immergermi negli abissi profondi di BizTalk, è una cosa a dir poco orgasmica.
Ho un Trace SQL, che mi sono preparato con pazienza e che permette di filtrare gli eventi più interessanti che BizTalk scatena durante il suo lavoro.
Vi garantisco che si scoprono cose estremamente interessanti, è possibile vedere la chiamata di host bts_DeQueueMessages_[HosTname] effettuata dall'Host Instance per eseguire lo spool dei messaggi.
L' inserimento delle property mediante la bts_InsertProperty e la fatidica bts_FindSubscriptions per la ricerca delle sottoscrizioni.
Penso che non esista niente di meglio per capire come esattamente funzioni ma soprattutto quali armi abbiamo a disposizione per poter intervenire e capire eventuali problemi.
Alcuni tipi di query possono esserci di grande aiuto a capire come un BizTalk Server sta funzionando e come è configurato.
In particolare mi sento sempre fare queste domande:
Come è possibile eseguire il resume di più messaggi?, Come faccio a capire quante istanze stanno lavorando bene e quali hanno problemi?
Chiaro che dalla Hub è possibile eseguire delle query ma non abbiamo a disposizione tantissimo.
Basta un pò di pazienza ed è BizTalk stesso a fornirci le risposte che cerchiamo.
Per provare queste queries non bisogna far altro che copiare il testo e eseguirlo in SQL 2005.
Configurazione delle messagebox:
declare @p2 nvarchar(128)
set @p2=N'NOMEMACCHINA'
declare @p3 nvarchar(128)
set @p3=N'BizTalkMsgBoxDb'
declare @p4 int
set @p4=1
declare @p5 int
set @p5=60
exec admsvr_LoadMsgBoxGroupProperties @nvcGroupName=N'BizTalk Group',@nvcMasterDBServer=@p2 output,@nvcMasterDBName=@p3 output,@nNumMsgboxServers=@p4 output,@nCacheRefreshInterval=@p5 output
select @p2, @p3, @p4, @p5
Per capire quale sia la master, disabilitare la pubblicazione dei messaggi ecc..
Ecco tutte le istance in sospeso
exec ops_OperateOnInstances @snOperation=0,@fMultiMessagebox=0,@uidInstanceID='00000000-0000-0000-0000-000000000000',@nvcApplication=N'',@snApplicationOperator=0,@nvcHost=N'',@snHostOperator=0,@nServiceClass=111,@snServiceClassOperator=0,@uidServiceType='00000000-0000-0000-0000-000000000000',@snServiceTypeOperator=0,@nStatus=36,@snStatusOperator=1,@nPendingOperation=1,@snPendingOperationOperator=0,@dtPendingOperationTimeFrom='Jan 1 1753 12:00:00:000AM',@dtPendingOperationTimeUntil='Dec 31 9999 10:59:59:997PM',@dtStartFrom='Jan 1 1753 12:00:00:000AM',@dtStartUntil='Dec 31 9999 10:59:59:997PM',@nvcErrorCode=N'',@snErrorCodeOperator=0,@nvcErrorDescription=N'',@snErrorDescriptionOperator=0,@nvcURI=N'',@snURIOperator=0,@dtStartSuspend='Jan 1 1753 12:00:00:000AM',@dtEndSuspend='Dec 31 9999 10:59:59:997PM',@nvcAdapter=N'',@snAdapterOperator=0,@nGroupingCriteria=0,@nGroupingMinCount=0,@nMaxMatches=51,@uidAccessorID='4386A978-682A-4F58-B32D-D9BA0D074F64',@nIsMasterMsgBox=0
Per eseguire un filter più rilassato è meglio filtrare in TexData su NotLike %bts_DeQueueMessages_NOMEHOST%
a meno che non vogliate vedere il cuore di BizTalk battere, è comunque carino.
La stored bts_DeQueueMessages_NOMEHOST viene chiamata continuamente dal relativo Host per eseguire lo spool dei messaggi.
Alla lunga risulta fastidiosa ma offre un buon punto di riferimento su alcune letture.
Per eseguire il resume di un messaggio BizTalk esegue questa chiamata:
set @p21=0
exec [dbo].[bts_UpdateMsgbox_NinoHost] @nArtifactType=1,@nAction=207,@uidObjectID=N'{6D12B877-ADFF-4B54-98B1-CB4A1A6B5E68}',@uidInstanceID=N'{6D12B877-ADFF-4B54-98B1-CB4A1A6B5E68}',@uidServiceID=N'{C97C4CB1-A853-413B-A3C6-C1CAECB74ABF}',@uidClassID=N'{59F295B0-3123-416E-966B-A2C6D65FF8E6}',@uidActivationID=N'{16B83A2B-CAAE-4581-B36F-675AA582CA6C}',@uidInstanceStateID=NULL,@uidWorkID=NULL,@uidPortID=NULL,@nvcErrorID=NULL,@nErrorCategory=0,@nvcAdditionalInfo=NULL,@nIsResumable=0,@dtResubmitTimeStamp='Dec 30 1899 12:00:00:000AM',@nvcLastAction=NULL,@nvcURL=NULL,@nvcAdapter=NULL,@fOptimize=1,@uidDBOwnerID=@p20 output,@nReturn=@p21 output
select @p20, @p21
Cchiaro che per lavorare al meglio sia necessario decodificare le varie informazioni, mi riferisco ai vari UID.
Per fare questo è necessario fare affidamento alle relative tabelle, quali la Applications, la famosa SPOOL dove abbiamo il messageType e il uidMessageID.
Ecco il Trace Template
Ebbene sì, come prevedevo Microsoft ha cambiato nome alla futura release BizTalk, la R3.
Il nuovo BizTalk si chiamerà BizTalk server 2009 , la trovo una decisione corretta, soprattutto per le pesanti modifiche effettuate alle principali componenti interne.
Chiaramente il cambiare il nome a una piattaforma come questa preclude ragioni di tutto rispetto, alcune delle quali molto interessanti.
L' interfaccia di sviluppo molto più solida e affidabile, chiaramente su piattaforma 2008, framework 3.5, l'architettura interna di interconnessione dei layer di comunicazione in WCF, quest' ultima è, secondo me la cosa migliore che potesse fare Microsoft.
Altrettanto interessante il supporto ad Hyper-V, e finalmente la possibilita di effettuare multi-deploy in ambienti cluster.
RFID rimane una piattaforma a parte ma che presenta interessati nuove possibilità verso il supporto di soluzioni mobile e protocolli industriali (LLRP, TDT, TDS, WS Discovery, EPCIS support)
Supporto su TFS di gran lunga migliorato, il messaging interno rivisto per la parte di interchange di tipo recoverable.
Negli anni a seguire Microsoft ha già annunciato che effettuerà altri interessanti rilasci, in questo ordine:
Supporto di sviluppo per complex mapping, per il B2B inserimento dela possibilità di gestire complex trading partners,
Nuova ESB Guidance e nuova carburazione sulla low latency.
Altri steroidi al BAM, grandissima feature di BizTalk.
Sapete cosa significa BizTalk Server 2009 e non R3?
Significa che a differenza di quello che sapevo, BizTalk non sarà più inglobato internamente a OSLO, come si pensava, ma sarà, giustamente, un una sua estensione.
Sono molto felice di tutto questo, OSLO è veramente interessante e credo rivoluzionerà tante cose ma penso che determinate problematiche architetturali debbano essere focalizzate alle relative piattaforme, ritengo che la "globalizzazione" tecnologica porti solo al caos.
...