all groups > sql server notification services > march 2005 >
You're in the

sql server notification services

group:

Custom Delivery Protocol


Custom Delivery Protocol Balaji Ramachandran
3/22/2005 3:31:02 AM
sql server notification services:
Hi,

I am developing a custom delivery protocol to send email notification with
attachment.

When I submit an event, the notification is generated. But the email
delivery is failed.

I am getting the following error message in the event log.


Event Type: Error
Event Source: NotificationServices
Event Category: None
Event ID: 9010
Date: 3/22/2005
Time: 4:25:12 PM
User: N/A
Computer: BILLPAY-BALAJI
Description:
<NotificationServicesEvent>
<Description>
The specified protocol is not recognized. If you are using a custom
delivery protocol, then an assembly and class name must be included.
</Description>
<Context>
<EventParameters>
<InstanceName>SpiderInstance</InstanceName>
<Protocol Name>myDeliveryProtocol</Protocol Name>
</EventParameters>

</Context>
<Instance>SpiderInstance</Instance>
<ApplicationName>Spider</ApplicationName>
<Component>Distributor</Component>
<ComponentDetails>
DistributorName: SpiderDist1
</ComponentDetails>
<Thread>173</Thread>
</NotificationServicesEvent>


Event Type: Error
Event Source: NotificationServices
Event Category: None
Event ID: 6043
Date: 3/22/2005
Time: 4:25:12 PM
User: N/A
Computer: BILLPAY-BALAJI
Description:
<NotificationServicesEvent>
<Description>
A delivery failure was reported.
</Description>
<Context>
<EventParameters>
<Distributor Id>1</Distributor Id>
<Distributor Name>SpiderDist1</Distributor Name>
<Delivery Channel Name>myDeliveryProtocolChannel</Delivery Channel Name>
<Notification Id>1</Notification Id>
<NotificationClassName>SpiderInfo</NotificationClassName>
<Notification Status Info></Notification Status Info>
<Notification Text></Notification Text>
<Notification Sent Time>3/22/2005 10:55:12 AM</Notification Sent Time>
</EventParameters>

</Context>
<Instance>SpiderInstance</Instance>
<ApplicationName>Spider</ApplicationName>
<Component>Distributor</Component>
<ComponentDetails>
DistributorName: SpiderDist1
</ComponentDetails>
<Thread>173</Thread>
</NotificationServicesEvent>

------------------------------
Here goes the AppADF.


<Protocol>
<ProtocolName>myDeliveryProtocol</ProtocolName>
<Fields>
<Field>
<FieldName>Subject</FieldName>
<SqlExpression>'Sample notification'</SqlExpression>
</Field>
<Field>
<FieldName>BodyFormat</FieldName>
<SqlExpression>'html'</SqlExpression>
</Field>
<Field>
<FieldName>From</FieldName>
<SqlExpression>'Sample@sample.com'</SqlExpression>
</Field>
<Field>
<FieldName>Priority</FieldName>
<SqlExpression>'Normal'</SqlExpression>
</Field>
<Field>
<FieldName>To</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
</Fields>
</Protocol>
---------------------------------
Here goes the appconfig.xml



<Protocols>
<Protocol>
<ProtocolName>myDeliveryProtocol</ProtocolName>
<ClassName>sample.myDeliveryProtocol</ClassName>
</Protocol>
</Protocols>
<DeliveryChannels>
<DeliveryChannel>
<DeliveryChannelName>myDeliveryProtocolChannel</DeliveryChannelName>
<ProtocolName>myDeliveryProtocol</ProtocolName>
<Arguments>
<Argument>
<Name>ProtocolProviderClassName</Name>
<Value>sample.myDeliveryProtocol</Value>
</Argument>
<Argument>
<Name>ProtocolProviderAssemblyName</Name>
<Value>c:\release\mydeliveryprotocol.dll</Value>
</Argument>
</Arguments>
</DeliveryChannel>
</DeliveryChannels>


Any suggestions?

Regards,
R.Balaji


Re: Custom Delivery Protocol Shyam Pather [MSFT]
3/22/2005 3:37:14 PM
Hello,
There are two ways to build a custom delivery protocol in NS:
1. You can implement IDeliveryProtocol
2. If you're building a custom protocol based on HTTP, you can implement
IHttpProtocolProvider.

#1 is the most flexible, general way to build a custom delivery protocol. #2
is a shortcut in the special case that you're building something HTTP-based.

Depending on which approach you're using, you configure your protocol
differently in the config file. It seems in your case that you've
implemented IDeliveryProtocol, but you're using the configuration style for
IHttpExtension.

To clarify what you're supposed to do in each case:
If you implement IDeliveryProtocol, then the <Protocol> configuration in the
config file must specify a provider name, class name, and assembly name
(full path). Yours is missing the assembly name. You can create a delivery
channel that uses your protocol by referencing the protocol name and then
configure whatever arguments are necessary for your protocol. You do not
need the ProtocolProviderClassName and ProtocolProviderAssemblyName
arguments - those are only used if you implement IHttpProtocolProvider.

If you're implementing IHttpProtocolProvider, you specify "HttpExtension" as
the class name in the <Protocol>element and you do not specify an assembly
name. Then, in the delivery channel configuration, you specify the
ProtocolProviderClassName and ProtocolProviderAssemblyName arguments so that
the HttpExtension class knows how to load your provider class.

Hope this helps.
-shyam
--
Learn more about SQL-NS:
http://www.amazon.com/exec/obidos/tg/detail/-/0672326647/
---------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm.
---------------------------------------------
[quoted text, click to view]

Re: Custom Delivery Protocol Balaji Ramachandran
3/22/2005 11:35:03 PM
Hi,

Thanks for your reply.
I got the problem solved.

I updated the appConfig.xml

<Protocol>
<ProtocolName>myDeliveryProtocol</ProtocolName>
<ClassName>verizon.myDeliveryProtocol</ClassName>
<AssemblyName>c:\release\mydeliveryprotocol.dll</AssemblyName>
</Protocol>

I didn't specify the assemblyName in the Protocol section.

After I put the assemblyName element, my custom delivery protocol worked.

Thanks.

Regards,
R.Balaji



[quoted text, click to view]
AddThis Social Bookmark Button