Salesforce Outbound Messages - salesforce

I used postbin.org to test the workflow outbound message service. I specified the criteria like Account Name not equal to Null.But when I create record of Account Object,I am getting
org.xml.sax.SAXParseException: Content is not allowed in prolog. error in Delivery Failure Reason.
I dont know to to check it out.Please let me know.Thanks in advance..

The Outbound messaging feature requires that your listener send back a well formed soap message indicating that it successfully processed the message as its HTTP response. It seems unlikely that postbin.org is sending that response, and hence OM is reporting that as a delivery failure, and the message will get retried again later.

Related

SQL Service Broker, send messages back to initiator

in my scenario, I want to have some services to be fixed (as in not needing to be updated) and as time goes by adding other services. (I'm using one DB instance, but it shouldn't matter in service broker)
I want to set up the fixed ones in a way to be able to send back a message to the initiator of any message in its queue without me changing its logic and procedures every time I add another service.
is it even possible or do I have to add more logic as new services are created?
If I'm understanding your question correctly, this is how Service Broker works by default. Which is to say that a conversation is between two parties (initiator and target). Once that conversation is established, either party can send messages on it and they will go to the other party. So, if you want to send a message back to the initiator, just send a message on the same conversation handle as the message was received on and you should be good to go.

How to handle failed skill events?

I'm implementing skill lifecycle events using "Skill Events". Going through the docs can't find anything that mentions what should I respond with for these events. Closest I found was:
Alexa will attempt to redeliver events if an acknowledgement is not
sent by the skill service, for up to one hour. If the skill service
receives an event, and the skill service sends an acknowledgment in
response, this event must then be managed by the skill service. In
either case, the skill service cannot, at a later time, retrieve past
events from Alexa.
Source
What does it imply, an empty 200 response? What do if something fails. Should I return a 200 status with a formatted error similar to Alexa ErrorResponse?
As the skill event data schema is different from typical Alexa events, I presume it's different.
So far by just playing with the responses, if I return an empty 200 response, Alexa understands that I acknowledged the request and doesn't send it anymore.
If something fails I respond with a 400 status and plaintext error msg. Then I received the request again later.
Also be sure to save the timestamp from either AlexaSkillEvent.SkillEnabled or AlexaSkillEvent.SkillAccountLinked requests with the user, so you can validate if the repeatedly sent events are valid if something isn't right.

Verification codes generate endpoint silently fails

I'm trying to use the generate endpoint to create backup codes for a user. Once every ~200 requests, I receive an empty return, with no notification of failure.
https://developers.google.com/admin-sdk/directory/v1/reference/verificationCodes/generate
Has anyone seen this in the past? is there a workaround here?
Thanks!

Camel with rabbitmq - Misspelt queue name

Today, I tried to simulate a scenario where in the camel "to" tag I supplied a mis-spelt queue name(which was not there) Camel or RabbitMq instead of throwing an exception back continued to finish the route flow.
Intrgigued I did write a sample program to send a message using "channel.basicPublish" with a wrong queue name. I never got any exception thrown back from rabbit mq client.
however if the exchange name was wrong, I did get an exception back. Is this expected behaviour?
I tried adding return listener, confirm listener,exception handler, etc., but none of them got invoked.
Any clues?
Messages are published to exchanges, so the exchange must be there when publishing messages. At publish time RabbitMQ doesn't care about queues, unless the mandatory flag is provided, or the channel is in confirm mode.

How to achieve interrupt-driven communication from server to client with servlets?

we wrote in C++ a screen sharing application based on sending screenshots.
It works by establishing a TCP connection btw the server and client, where the server forwards every new screenshot received for a user through the connection, and this is popped-up by the client.
Now, we are trying to host this on google app engine, and therefore need 'servlet'-ize and 'sandbox' the server code, so to implement this forwarding through HTTP requests.
I immagine the following:
1. Post request with the screenshot as multiple-data form (apache uploads ..).
But now the server needs to contact the specified client (who is logged in) to send it/forward the screenshot.
I'm not sure how to 'initiate' such connection from the servlet to the client. The client doesn't run any servlet environment (of course).
I know HTTP 1.1 mantains a TCP connection, but it seems gapps won't let me use it.
1 approaches that comes to mind is to send a CONTINUE 100 to every logged in user at login, and respond with the screenshot once it arrives. Upon receival the client makes another request, and so on.
an alternative (insipired from setting the refresh header for a browser) would be to have the app pool on a regular basis (every 5 secs).
You're not going to be able to do this effectively on GAE.
Problem 1: All output is buffered until your handler returns.
Problem 2: Quotas & Limits:
Some features impose limits unrelated
to quotas to protect the stability of
the system. For example, when an
application is called to serve a web
request, it must issue a response
within 30 seconds. If the application
takes too long, the process is
terminated and the server returns an
error code to the user. The request
timeout is dynamic, and may be
shortened if a request handler reaches
its timeout frequently to conserve
resources.
Comet support is on the product roadmap, but to me your app still seems like a poor fit for a GAE application.
Long Polling is the concept used for such asynchronous communications between server and client.
In Long Polling, servlet keeps a map of client and associated messages. Key of Map being client id and value being list of messages to be sent to the client. When a client opens a connection with server (sends request to a servlet), the servlet checks the Map if there are any messages to be sent to it. If found, it sends the messages to the client exits from the method. On receiving messages, the client opens a new connection to the server. If the servlet does not find any messages for given client, it waits till the Map gets updated with messages for given client.
This is a late reply, I'm aware, but I believe that Google have an answer for this requirement: the Channel API.

Resources